【发布时间】:2016-09-23 23:15:02
【问题描述】:
为什么正确调用了这个完成块?
CompletionBlock comp = ^(BOOL enabled) {
//enabled is being correctly set
NSLog(@"result: %i", enabled);
};
@autoreleasepool {
Monitor *monitor = [[Monitor alloc]initWithCompletionBlock:comp];
monitor = nil;
}
监视器将在监视器实例化 10 秒后启动 NSTimer 以调用完成块。
监视器在内部确实有对 comp 的引用(通过 @property (nonatomic) CompletionBlock compblock;),但循环引用的成分似乎不存在,因为没有引用监视器。
这是正常行为吗?这是我可以指望的行为吗?这对我来说真的没有意义。
【问题讨论】:
-
没有看到Monitor类的实现,我们真的不能给你一个正确的答案。
标签: objective-c closures automatic-ref-counting