Objective c ARC:ivar分配是否受属性影响?
我们无意中提到,实例变量在默认情况下启用了Objective c ARC:ivar分配是否受属性影响?,objective-c,automatic-ref-counting,Objective C,Automatic Ref Counting,我们无意中提到,实例变量在默认情况下启用了\u strong——这是否意味着: @interface Foo { Bar *test; // implicitly __strong } @property (nonatomic, unsafe_unretained) Bar *test; @end 和呼唤 test = [[Bar alloc] init]; 在实现文件中,新的条实例是否将被保留?如果是,考虑到属性告诉ARC不要碰它,当释放Foo时,条实例会被释放吗?您尝试过编译它吗
\u strong
——这是否意味着:
@interface Foo {
Bar *test; // implicitly __strong
}
@property (nonatomic, unsafe_unretained) Bar *test;
@end
和呼唤
test = [[Bar alloc] init];
在实现文件中,新的
条
实例是否将被保留?如果是,考虑到属性告诉ARC不要碰它,当释放Foo时,条
实例会被释放吗?您尝试过编译它吗?这行不通。与属性关联的ivar必须与属性具有相同的所有权限定符。这是在:
如果关联实例变量已经存在,则其所有权限定必须等于属性的所有权;否则,将使用该所有权限定创建实例变量
如果删除显式ivar声明,则合成的ivar将
\uu不安全\u未恢复
,就像属性一样。你是对的,我在尝试此操作时犯了一个错误-我现在确实收到了一个错误。谢谢
@interface Digby : NSObject
{
NSString * wiska;
}
@property (unsafe_unretained) NSString * wiska;
@end
@implementation Digby
@synthesize wiska; // Existing ivar 'wiska' for property 'wiska' with unsafe_unretained attribute must be __unsafe_unretained
@end