Selector

Selector

πŸ’‘ 속성에 μ ‘κ·Όν•˜κ±°λ‚˜ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λŠ” 것이 μ•„λ‹ˆλΌ, κ°€λ¦¬ν‚€λŠ” μ—­ν• λ§Œ ν•œλ‹€. μ½”λ“œ μ˜μ—­μ˜ λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό κ°€λ¦¬μΌœμ„œ, μ—°κ²°μ‹œν‚€λŠ” κΈ°μˆ μ΄λ‹€.

  • ν΄λ‘œμ €μ™€ μœ μ‚¬ν•˜λ‹€.

    • λ‹€λ§Œ, ν˜ΈμΆœμ€ ν•  수 μ—†κ³ , νŠΉμ • 이벀트λ₯Ό μ „λ‹¬ν•΄μ£ΌλŠ” 역할이닀.

  • λ©”μ„œλ“œ μ£Όμ†Œλ₯Ό 톡해 λ©”μ„œλ“œλ₯Ό 가리킨닀.

    • λ§€κ°œλ³€μˆ˜μ— λ©”μ„œλ“œμ˜ 이름이 λ“€μ–΄κ°„λ‹€. (μ£Όμ†Œ)

    • λ‚΄λΆ€μ μœΌλ‘œ Objective-C둜 κ΅¬ν˜„λ˜μ–΄μžˆλ‹€.

  • ꡬ쑰체 νƒ€μž…μ΄λ―€λ‘œ 가리킬 수만 있고, 싀행은 λΆˆκ°€λŠ₯ν•˜λ‹€.

μ˜ˆμ‹œ

class Dog {
    var num = 1.0

    @objc var doubleNum: Double {
        get {
            return num * 2.0
        }
        set {
            num = newValue / 2.0
        }
    }

    @objc func run() {
        print("달리닀")
    }
}

// (계산)속성을 κ°€λ₯΄ν‚¬λ•Œ
let eyesSelector = #selector(**getter**: Dog.doubleNum)    // 계산(읽기) 속성
let nameSelector = #selector(**setter**: Dog.doubleNum)    // 계산(μ“°κΈ°) 속성

// λ©”μ„œλ“œλ₯Ό κ°€λ₯΄ν‚¬λ•Œ
let runSelector = #selector(Dog.run) // ν”ν•˜μ§€ μ•Šμ€ 경우
  • 클래슀, Objective-C ν”„λ‘œν† μ½œμ— ν¬ν•¨λœ λ©€λ²„μ—λ§Œ 적용이 κ°€λŠ₯ν•˜λ‹€. (κ΅¬μ‘°μ²΄μ—μ„œ 적용 λΆˆκ°€λŠ₯)

  • λ‚΄λΆ€μ μœΌλ‘œ Objective C ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•˜κ³  있기 λ•Œλ¬Έμ— @objc ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄μ•Όν•œλ‹€.

μ˜ˆμ‹œ

  • addTarget

    • μ½”λ“œλ‘œ λ²„νŠΌμ„ λ§Œλ“€μ—ˆμ„ λ•Œ, μ–΄λ–€ ν•¨μˆ˜λ₯Ό μ‹€ν–‰μ‹œν‚¬μ§€ κ²°μ •ν•΄μ•Όν–”λ‹€.

    • 즉, λ²„νŠΌμ„ λˆŒλ €μ„ λ•Œ, μ–΄λ–€ μΈμŠ€ν„΄μŠ€λ₯Ό μ‹€ν–‰μ‹œν‚¬μ§€ 적어쀄 λ•Œ μ‚¬μš©ν•œλ‹€. μ΄λ•Œ λ§€κ°œλ³€μˆ˜μ— selectorλ₯Ό 톡해 μˆ˜ν–‰νžŒλ‹€.

Last updated