下面是一个使用弱参数的小例子:
@interface MYTestObject : NSObject
@end
@implementation MYTestObject {
void(^_block)(void);
}
- (void)dealloc {
NSLog(@"DEALLOC!");
}
- (id)init {
if (self = [super init]) {
[self doSomethingWithObject:self];
}
return self;
}
- (void)doSomethingWithObject:(id __weak /* <- weak argument! */)obj {
_block = ^{
NSLog(@"%p", obj);
};
}
@end
它有效:-dealloc
被调用!此外,如果您删除,__weak
您将获得一个保留周期,这是绝对正确的。
想知道,如果这只是一个副作用并且使用弱论点是完全不安全的?或者它是一种特定的行为,我只是一个糟糕的谷歌用户?