カスタムデリゲートとプロトコル機能を使用しています。
次のようにクラスを実装しました。
@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
ます。
次に、次のようなセッターメソッドを追加しました。
- (void)setDelegate:(id<MyDelegate>)aDelegate
{
delegate = aDelegate;
}
すべて正常に動作します!!!
次に、updateRequired
メソッドを(カスタムセッターなしで)次のように変更しました。
- (void)updateRequired: (id)sender
{
if(_delegate)
{
[_delegate update];
}
}
こちらも元気に動いています!!!
最初のケースで機能しない理由と、他の 2 つのケースで機能する理由がわかりませんでした。
問題を見つけるのを手伝ってください、事前に感謝します