• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

調べてわかったのですが、複数パラメータを持つメソッドのSELは作成できるのですが(下記)、UIButtonなどのtarget-action設定時にパラメータを渡す事はできないようです。

-(void)methodWithNoArguments;
SEL noArgumentSelector = @selector(methodWithNoArguments);

-(void)methodWithOneArgument:(id)argument;
SEL oneArgumentSelector = @selector(methodWithOneArgument:); // notice the colon here

-(void)methodWIthTwoArguments:(id)argumentOne and:(id)argumentTwo;
SEL twoArgumentSelector = @selector(methodWithTwoArguments:and:); // notice the argument names are omitted

ちなみに、自分でSELのメソッドを呼び出すときには、パラメータを渡す事は可能:

-performSelector:
-performSelector:withObject:
-performSelector:withObject:withObject:

###senderでごにょごにょ
できないと言っても、if(sender == _myButton) {} とか sender.tag をうまく使って、誰が呼出し元かや、intを渡す事は可能なようです。

###Refs

  • How do SEL and @select work in iphone sdk?

http://stackoverflow.com/questions/297680/how-do-sel-and-select-work-in-iphone-sdk

  • How to I pass @selector as a parameter?

http://stackoverflow.com/questions/932801/how-to-i-pass-selector-as-a-parameter

  • Help me understand selector

http://www.cocos2d-iphone.org/forum/topic/844

  • AppleのドキュメントのSelectors項

http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocSelectors.html#//apple_ref/doc/uid/TP30001163-CH23-SW4

posted by satoko satoko on Wed 12 Aug 2009 at 20:53 with 0 comments