我有一个带有属性的类,它是对块的弱引用.
@interface BlockTest : NSObject
@property (nonatomic, weak) void(^testBlock)();
@end
Run Code Online (Sandbox Code Playgroud)
在课程的另一点我使用这个块像这样:
- (void)foobar {
self.testBlock = ^{
[self doSomething];
};
}
Run Code Online (Sandbox Code Playgroud)
编译器(Apple LLVM 3.0)抱怨可能存在保留周期,因为self这里强烈捕获.但我没有看到它如何导致保留周期,因为块本身是一个__weak参考,所以应该没问题.如果我正确理解了ARC弱引用,那么当-foobar方法返回时,传递给的块self.testBlock应该被释放(如果没有保存在其他地方),因此也会释放self.
编译器仍然认为可能存在保留周期的原因是什么?