ARC 看起来非常好,但有一两个典型的命名约定/规则对我来说不清楚的极端情况。查看以下围绕 NSThread 的类别实现:
@interface NSThread (BlockAdditions)
- (void)performBlock:(dispatch_block_t)block;
@end
@implementation NSThread (BlockAdditions)
- (void)internal_performBlock:(dispatch_block_t)block
{
block();
}
- (void)performBlock:(dispatch_block_t)block
{
[self performSelector:@selector(internal_performBlock:)
onThread:self
withObject:[block copy]
waitUntilDone:NO];
}
我的问题是:block
打电话后会泄漏-copy
吗?编译器如何知道何时释放块?Instruments 没有检测到泄漏,但这并不能说服我,鉴于我对 ARC 的了解,这种情况得到了正确处理。感谢您提供任何信息!