在下面代码里为什么要将 tmp 置为 nil ?在 blk_执行完后 tmp 不会自己释放的么?
typedef void (^blk_t)(void);
@interface MyObject : NSObject
{
blk_t blk_;
}
@end
@implementation MyObject
- (id)init
{
self = [super init];
__block id tmp = self;
blk_ = ^{
NSLog(@"self = %@", tmp);
tmp = nil;
};
return self;
}
- (void)execBlock
{
blk_();
}
@end
int main()
{
id object = [[MyObject alloc] init];
[object execBlock];
return 0;
}
typedef void (^blk_t)(void);
@interface MyObject : NSObject
{
blk_t blk_;
}
@end
@implementation MyObject
- (id)init
{
self = [super init];
__block id tmp = self;
blk_ = ^{
NSLog(@"self = %@", tmp);
tmp = nil;
};
return self;
}
- (void)execBlock
{
blk_();
}
@end
int main()
{
id object = [[MyObject alloc] init];
[object execBlock];
return 0;
}