0

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

@interface AsyncProcessor : NSObject

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

// ... other unrelated stuff

@end

@protocol AsyncProcessorDelegate <NSObject>

- (void) asyncProcessorEvent:(AsyncProcessorEventType) event;

@end

问题是实现委托的视图控制器在 AsyncProsessor 任务分派后立即被解除。当处理完成时,视图控制器内存被释放,委托为零。然后委托事件不能被传递回视图控制器。

我能想到的一种解决方案是定义委托“强”,并在委托方法 asyncProcessorEvent 中,将委托设置为 nil 以在所有处理完成后打破内存循环。但我觉得这是一个 hack,到处都告诉我代表应该被定义为“弱”。

以前有人遇到过这个问题吗?请给一些建议。

4

0 回答 0