我正在使用自定义委托和协议功能。
我实现了我的类,如下所示:
@protocol MyDelegate <NSObject>
@required
- (void)update;
@end
@interface MyHandlerClass : NSObject
{
id <MyDelegate>delegate;
}
@property (nonatomic, weak) id <MyDelegate>delegate;
@end
我的实现类看起来像:
@implementation MyHandlerClass
@synthesize delegate = _delegate;
- (void)updateRequired: (id)sender
{
if(delegate)
{
[delegate update];
}
}
@end
从另一个班级,我将其设置为:
[sharedManager setDelegate:self];
但是当updateRequired
被触发时,它显示为nil
。
然后我添加了一个 setter 方法,例如:
- (void)setDelegate:(id<MyDelegate>)aDelegate
{
delegate = aDelegate;
}
一切正常!
然后我改变了updateRequired
方法(没有自定义设置器),如:
- (void)updateRequired: (id)sender
{
if(_delegate)
{
[_delegate update];
}
}
它也工作正常!
我找不到为什么它不适用于第一种情况以及为什么它适用于其他两种情况?
请帮助我找到问题,在此先感谢