次のようなメソッドを宣言する他の誰かのコードに出くわしました:
- (void) method:(id)a:(NSString*)b { }
コンパイラは次のコードを受け入れ、警告のみを表示します。
'a' used as the name of the previous parameter rather than as part of the selector
このコードは、このタイプのさまざまな関数を宣言し、署名「methodname::」を使用して NSSelectorFromString を介してそれらを呼び出します。だから、すべてが一貫しています。
そのメソッド シグネチャは単なる間違いなのか、それとも他に何かあるのだろうか。コード内で一貫して使用されているため、これはタイプミスではないと思います。私は作者を知らないので、これが天才のコードなのか、それともその逆なのかわかりません。
'b' は匿名パラメーターですか? (もしそうなら、これをよりよく示すために、「a」と「:」の間に空白を入れて書くべきではありませんか?) ただし、ObjC ドキュメントで anon parms については何も見つかりません。
構文を変更して 2 番目のパラメーターに名前を付け、それに応じて署名参照を修正すると、動作に変化はありますか? 警告を取り除くためにこの変更を行う予定ですが、気付いていない問題を作成する可能性があるのではないかと思います。