1

탭 제스처 및 알림이 작동하는 방식을 알고 있기 때문에 문제가되지 않습니다. 내가 함께하고 매개 변수없이 모두 기능을 사용했습니다탭 제스처 및 알림 기능을 선언 할 때 매개 변수/인수가 필요한 경우?

그러나
override viewDidLoad(){ 
    super.viewDidLoad() 


    NotificationCenter.default.addObserver(self, selector: #selector(notifyMe), name: NSNotification.Name(rawValue: notificationKey), object: nil) 

    let gesture = UITapGesture(target: self, action: #selector(tapMe)) 
    view.addGestureRecognizer(gesture) 
} 


@objc func tapMe(_ sender: UITapGestureRecognizer){ 
    // do something 
} 

@objc func notifyMe(_ notification: Notification){ 
    // do something 
} 

/: 나는 알 무엇

나는 어떤 사람들은 탭 제스처 기능이나 알림 기능을위한 매개 변수/인수를 사용하여 본 적이있다 인수 그들은 잘 작동 :

@objc func tapMe(){ 
    // do something 
} 

@objc func notifyMe(){ 
    // do something 
} 

는 그들없이 매개 변수/인수를 사용하는 목적을 어떻게 작동 않다면?

답변

1

목적은 파악하고 sender /를 object과 notication의 경우는 userInfo 사전에서 추가 정보/데이터를 얻을 수 있기를 구별 할 수있을 것입니다.

+0

ahhhhhhh, 사실 1 시간 동안 나는 함수 params와 함수가 실행되지 않고 userInfo dict를 사용했기 때문에 의미가 있습니다. 나는 그 문제가 무엇인지 알 수 없었다. 이제이 질문에 답합니다. 기본적으로 userInfo dict가 사용되지 않는 한 괜찮습니다. 도와 줘서 고마워. –

1

네, 그렇습니다. 매개 변수는 선택 사항입니다. 이는 선택기가 수행 될 때 objective-C 런타임은 선택기에 올바른 수의 인수가 있는지 여부에 상관하지 않기 때문입니다. 선택기에 여러 개체를 전달하기 만하면됩니다. 선택기에 일치하는 매개 변수가있는 경우 매개 변수에는 전달 된 개체의 해당 값이 있습니다. 그렇지 않으면 객체가 그냥 버려집니다. 따라서 특정 UIControl 유형 (AnyObject)의 매개 변수 또는 전혀 매개 변수가없는 IBAction을 선언 할 수 있습니다.

선택기를 수행 할 때 함께 수행되는 추가 개체는 분명히 쓸모있는 것은 아닙니다. 여러 제스처 인식기가 있거나 UIButton이 하나의 단일 메서드에 연결된 경우 그렇다면 누가 sender인지 아는 것이 유용합니다. 알림의 경우 매개 변수에는 일반적으로 알림에 대한 유용한 정보가 포함되어 있습니다.

+0

도와 줘서 고마워! :) –