Objective-C でのデリゲート メソッドの使用法について知る必要があります。正しい情報源を教えていただけますか?
ベストアンサー1
クラスのデリゲート プロトコルを宣言する必要があります。クラスのデリゲート プロトコルとインターフェイスの例はFoo
次のようになります。
@class Foo;
@protocol FooDelegate <NSObject>
@optional
- (BOOL)foo:(Foo *)foo willDoSomethingAnimated:(BOOL)flag;
- (void)foo:(Foo *)foo didDoSomethingAnimated:(BOOL)flag;
@end
@interface Foo : NSObject {
NSString *bar;
id <FooDelegate> delegate;
}
@property (nonatomic, retain) NSString *bar;
@property (nonatomic, assign) id <FooDelegate> delegate;
- (void)someAction;
@end
でプロパティを合成することを忘れないでください@implementation
。
このコードでは、FooDelegate というプロトコルを宣言しています。このプロトコルに準拠するクラスは、 のように宣言されます@interface SomeClass : SuperClass <FooDelegate> {}
。このクラスはプロトコル に準拠しているためFooDelegate
、 のメソッドを実装できるようになりましたFooDelegate
(これらの実装を要求するには、@required
の代わりにを使用します@optional
)。最後のステップは、Foo
に準拠するクラスでオブジェクトをインスタンス化しFooDelegate
、このFoo
オブジェクトの delegate プロパティを設定することです。
Foo *obj = [[Foo alloc] init];
[obj setDelegate:self];
これで、クラスはFoo
デリゲートが正しく設定されたオブジェクトからメッセージを受信する準備が整いました。