Я делаю что-то вроде этого:
@protocol CallbackDelegate
-(void) performCallback;
@end
@interface MyObject : NSObject {
id<CallbackDelegate> delegate;
}
-(void)AsyncFuncCall;
@end
@property (nonatomic, assign) id<CallbackDelegate> *delegate;
Код, которому принадлежит MyObject
, устанавливает делегата для получения функции обратного вызова:
MyObject *myobject = [[MyOject alloc] init];
myobject.delegate = x;
Затем в MyObject
, в результате асинхронного вызова функции, я сообщу делегату:
-(void)AsyncFuncCall {
[delegate performCallback];
}
Кажется, что в большинстве случаев все работает хорошо, за исключением случаев, когда мой делегат освобождается в результате корректной очистки памяти. В этом случае я просто хочу не выполнять обратный вызов
Кто-нибудь знает лучший способ проверить, действителен ли делегат?
Я пробовал все виды вещей, таких как:
if (delegate != nil) {
...
}
без удачи.