セレクターを任意のターゲットに向けることができます。通常、self
ターゲットである理由は、コードでUIButton / UIBarButtonItemをインスタンス化するのが非常に普通であるためです。そのため、多くのチュートリアルには、セレクターが同じクラスで参照する実装が含まれています。
たとえば、View Controllerでインスタンス化されたときに、次のボタン呼び出しアクションのみを処理するように設計されたクラスを作成できます。
#import <UIKit/UIKit.h>
#import "OtherObject.h"
@interface SomeViewController : UIViewController
@property (strong, nonatomic) OtherObject *other;
@end
@implementation SomeViewController
@synthesize other;
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *someButton = [[UIButton alloc] initWithFrame:CGRectZero];
[someButton addTarget:other action:@selector(someMethodInOther) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:someButton];
UIButton *anotherButton = [[UIButton alloc] initWithFrame:CGRectZero];
[anotherButton addTarget:other action:@selector(anotherMethodInOther) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:anotherButton];
}
@end
IBActionを使用すると、メソッドの実装をxib/storyboardを介して接続できることをInterfaceBuilderに通知できます。