在委托事件方法调用之前,弱委托变为nil

时间:2013-07-16 20:27:08

标签: objective-c automatic-ref-counting grand-central-dispatch

我的视图控制器中有一些繁重的处理任务,因此我将它们放在使用GCD的后台线程中。并且任务封装在类AsyncImageProcessor

@interface AsyncProcessor : NSObject

@property (weak, nonatomic) id<AsyncProcessorDelegate> delegate;

// ... other unrelated stuff

@end

@protocol AsyncProcessorDelegate <NSObject>

- (void) asyncProcessorEvent:(AsyncProcessorEventType) event;

@end

问题是在调度AsyncProsessor任务后立即关闭实现委托的视图控制器。在处理完成时,视图控制器内存被释放,委托为零。然后委托事件无法传递回视图控制器。

我能想到的一个解决方案是定义委托“strong”,并在委托方法asyncProcessorEvent中,将委托设置为nil以在完成所有处理后中断内存循环。但我觉得这是一个黑客,我被告知在任何地方都应该将代表定义为“弱”。

以前是否有人遇到此问题?请提出一些建议。

0 个答案:

没有答案