我需要了解 Objective-C 中委托(delegate)方法的用法。谁能指出正确的来源?
最佳答案
您需要为您的类声明一个委托(delegate)协议(protocol)。 Foo
类的委托(delegate)协议(protocol)和接口(interface)示例可能看起来像这样:
@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 的协议(protocol);符合此协议(protocol)的类将被声明为 @interface SomeClass : SuperClass <FooDelegate> {}
.因为这个类符合协议(protocol)FooDelegate
,它现在可以实现 FooDelegate
下的方法(要实现这些,请使用 @required
而不是 @optional
)。最后一步是 Foo
要在符合 FooDelegate
的类中实例化的对象, 对于这个 Foo
对象设置其委托(delegate)属性:
Foo *obj = [[Foo alloc] init];
[obj setDelegate:self];
现在,您的类(class)已准备好接收来自 Foo
的消息。其委托(delegate)设置正确的对象。
https://stackoverflow.com/questions/645449/