メソッドのラベルは空でもいける
たまたま同僚が書いたメソッドを呼び出そうと、Xcodeのエディタからコード補完のドロップダウンリストを出したら、初めて見るパターンの候補が出てきた。
open::::
一瞬何が起きたか分からなかったけど、要するに引数のラベルが空文字列になっている(2つ目以降の3つの引数のラベルが空)ということだった。ラベルも含めてメソッド名となるのが望ましいけど、Objective-Cの言語仕様で許されているということなのだからTPOによっては使い分けても良いかも。引数にリテラルを使わないと大抵はラベルと同じ変数名になって、コードが二度言いしているようなウルサイ状態になることもあるし。
更に試してみたところ最初のラベルまで空でもいけた。もうなにがなんだか。
- (void):(int)a { } - (void)test { [self :123]; }