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/objectuserInfo辞書から追加情報/データを取得できるようにするnoticationの場合を識別し、区別することができることです。

+0

ahhhhhhh、実際には意味があります。なぜなら1回は関数paramsなしでuserInfo dictを使用していて、関数が実行されていなかったからです。私は問題が何であるか把握できませんでした。これで質問に答えます。基本的には、userInfo dictが使用されていない限り、問題ありません。あなたの助けをありがとう:) –

1

はい、そうです。パラメータはオプションです。なぜなら、セレクタが実行されたとき、objective-Cランタイムは、セレクタが正しい数の引数を持っているかどうか気にしないからです。それは、セレクターにたくさんのオブジェクトを渡すだけです。セレクタに一致するパラメータがある場合、パラメータは渡されたオブジェクトの対応する値を持ちます。そうでなければ、オブジェクトはちょうど投げ捨てられます。これは、特定のUIControlタイプのパラメータ、AnyObject、またはパラメータをまったく使用しないで、IBActionを宣言することもできます。

セレクタが実行されるとき、それと共に実行される追加のオブジェクトは明らかに必ずしも役に立たないとは限りません。複数のジェスチャーレコーダーがある場合、またはUIButtonが1つの方法に接続されている場合。次に、誰がsenderであるかを知ることは有用です。通知の場合、通常、パラメータには通知に関する情報が含まれています。

+0

助けてくれてありがとう! :) –

関連する問題