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