プロトコルやヘッダ宣言されていないセレクターを使おうとするとUndeclared selectorの警告がでます。これを防ぐには、プロトコルやヘッダで宣言すればよいのですが、面倒だったりそうすることが相応しくない場合もあります。そういった場合には、@selector(someMethod)の代わりに、sel_registerName(“someMethod”)と記述すると、警告が発生しないようになります。ただし、この方法を使うと、実行時までセレクタ名があっているか検証されなくなるので、誤植や、呼び出し間違いの危険性がありますのでご注意ください。
SEL sel1 = @selector(someMethod);
SEL sel2 = sel_registerName("someMethod"); //@"someMethod"ではなく、"someMethod"
SEL sel2 = sel_registerName("someMethod"); //@"someMethod"ではなく、"someMethod"
stackoverflow: How to get rid of the ‘undeclared selector’ warning
iOS Developer Library: Objective-C Runtime Reference