【发布时间】:2013-08-19 14:51:03
【问题描述】:
这是一个使用弱参数的小例子:
@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,您将获得一个保留周期,这是绝对正确的。
想知道,如果这只是一个副作用并且使用弱参数是完全不安全的?或者它是一种特定的行为,而我只是一个糟糕的谷歌用户?
【问题讨论】:
-
弱参考意味着没有保留,所以我认为这是正确的行为
-
是的,您是对的,但我无法确定具体规范。
-
我的意思是关于参数的规范,而不是 ivars、属性等。
-
@Rob:据我所知,即使使用 ARC,在某些情况下您也必须复制一个块。
标签: objective-c arguments automatic-ref-counting weak-references