-
[Swift] μ λ ν°(Selector)λ?iOS/π Swift 2021. 5. 2. 16:00
1μ°¨ μμ : 2021/06/16
2μ°¨ μμ : 2021/07/05
3μ°¨ μμ : 2021/07/08
4μ°¨ μμ : 2022/02/13
μλ νμΈμπΆ
μ΄λ² μκ°μλ μ λ ν°μ λν΄ μμλ³΄κ² μ΅λλ€.
νμ Objective-C μ κ΄λ ¨λ κ°λ μ΄ λμ€λ©΄ λ§μ°ν μ΄λ €μμ§λ λλμ΄ λλλ°μ....
λ€νν μ λ ν°λ κ·Έλ κ² μ΄λ €μ΄ κ°λ μ μλλλ€~~
κ·ΈλΌ μμν΄λ³Όκ²μ!!π₯
μ λ ν°λ λ©μλλ₯Ό μλ³ν μ μλ κ³ μ ν μ΄λ¦μ λλ€.
Swiftμμλ struct νμ μ΄λ©° μ»΄νμΌ νμμ μ§μ λ©λλ€.
" A selector is the name used to select a method to execute for an object, or the unique identifier that replaces the name when the source code is compiled. A selector by itself doesn’t do anything. It simply identifies a method. The only thing that makes the selector method name different from a plain string is that the compiler makes sure that selectors are unique."
μΈμ νμν κΉ?
UIKit λ΄λΆμ Objective-C λ°νμμΌλ‘ μ€νλλ λ©μλκ° μ λ ν°λ₯Ό νλΌλ―Έν°λ‘ μ λ¬λ°μ λ,
μ λ¬μ νμν μ λ ν° μΈμ€ν΄μ€λ₯Ό μμ±νλ €κ³ μ¬μ©ν©λλ€.
(μ΄μΈμ μ©λλ‘ μ¬μ©ν΄λ³Έ μ μ΄ μμ΅λλ€....π€)
μλ₯Ό λ€μ΄ μλ μ¬μ§κ³Ό κ°μ΄ 컨νΈλ‘€μ target-action μ ꡬνν λ,
addTarget(target:action:for) λ©μλλ₯Ό μ¬μ©νλλ°μ....
" μ¬κΈ°μ 컨νΈλ‘€μ UIControl λ₯Ό μλΈν΄λμ±ν UIButton, UISlider λ±μ ν΄λμ€ μ€λΈμ νΈλ₯Ό κ°λ¦¬ν΅λλ€."
μ΄ λ©μλμ λλ²μ§Έ μ λ¬μΈμ action μ λ°λ‘λ°λ‘ Selector νμ μ λ°κ³ μμ΅λλ€!!
μ΄ λ μ λ ν°λ₯Ό λ§λ€μ΄μ μ λ¬ν΄ μ£Όμ΄μΌ ν©λλ€!!!!
μ λ ν°λ μ΄λ»κ² λ§λλμ?
let selector = #selector(someFunction)
Seletor νμ μ΄ μ 곡νλ κΈ°λ³Έμ μΈ μμ±μκ° μμ§λ§,
#selctor( ) λ₯Ό μ¬μ©νμ¬ μΈμ€ν΄μ€λ₯Ό μ»μ΅λλ€.
μ΄λ° μμΌλ‘ λ§μ΄μ£
@objc func makeDescription(age: Int, birthDate: Date) { // ꡬνλΆ } #selector(makeDescription(age:birthDate:))
#selector( ) λ©μλλ νλΌλ―Έν°μ Function Notation λ°©μμΌλ‘ ν¨μλ₯Ό μ λ¬ν©λλ€.
>> Function Notaion (ν¨μ νκΈ°λ²) λ°©μμ΄ κΆκΈνλ€λ©΄?? <<
μλ°μμΌλ‘ Argument Label μ : (μ½λ‘ ) μΌλ‘ ꡬλΆνμ¬ λμ΄νλκ² Function Notaion λ°©μ μ λλ€π
μ λ ν°λ₯Ό μμ±ν λ©μλλ @objc λ₯Ό λΆμ¬μΌνλ€
@objc func test() { print("test funtion") } let selector = #selector(test) button.addTarget(target: self, action: selector, for: .touchUpInside)
#selector() μ μμ swift ν¨μλ₯Ό μ λ¬νλ©΄ μΈμνμ§ λͺ»ν©λλ€.
Objective-C μ μΈμμν€κΈ° μν΄μλ μ μ½λμ @objc test() {...} μ²λΌ
λ©μλ μμ @objc νΉμ±μ μΆκ°ν΄μ£Όμ΄μΌ ν©λλ€.
μ°Έκ³ λ‘, ν΄λμ€ μμ±μ getter μ setter λ μ λ ν°λ₯Ό λ§λ€μ΄ μ€ μ μμ΅λλ€.
μ΄ λλ μμ± μμ @objc νΉμ±μ μΆκ°ν΄μ€λλ€.
import Foundation class Person { @objc var name: String init(name: String) { self.name = name } } var person = Person(name: "Park") let selector = #selector(getter: person.name)
λ!
π€π’[μ°μ§±μ iOS λΈλ‘κ·Έ]π΅π»
iOSλ₯Ό 곡λΆνλ©΄μ λ°°μ΄ λ΄μ©μ κΈ°λ‘νκ³ μμ΅λλ€.'iOS > π Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] νλ‘ν μ½ μ΄μ 리 (0) 2021.05.22 [Swift] - Capturing Values by Closures (κ°μ μΊ‘μ²νλ ν΄λ‘μ ) (0) 2021.05.07 [Swift] - defer λ¬Έμ΄λ? (0) 2021.04.29 [Swift] - μμ (Inheritance) (0) 2021.04.21 [Swift] - Deinitialization (0) 2021.04.20