Objective c 分配给属性的变量是否遵循该属性的行为?

Objective c 分配给属性的变量是否遵循该属性的行为?,objective-c,properties,autorelease,Objective C,Properties,Autorelease,想了解一下Objective-C属性在“链接”到实例变量时是如何工作的。我的困惑源于如何通过@synthesis指令将属性设置为等于实例变量,如 @synthesize someProp = _someIVar; 现在,如果我的someProp都像 @property (retain,readonly) SomeClass* someProp …这会不会 -(id)initWithAutoreleasedInstanceOfSomeClass:(SomeClass*)thingThatIsA

想了解一下Objective-C属性在“链接”到实例变量时是如何工作的。我的困惑源于如何通过
@synthesis
指令将属性设置为等于实例变量,如

@synthesize someProp = _someIVar;
现在,如果我的
someProp
都像

@property (retain,readonly) SomeClass* someProp
…这会不会

-(id)initWithAutoreleasedInstanceOfSomeClass:(SomeClass*)thingThatIsAutoreleased {
    self = [super init];
    if(self) {
         _someIVar = thingThatIsAutoreleased;
    }
    return self;
}
。。。是否导致保留自动删除的内容


坦克

因为它是只读的,所以没有setter,但是可以通过设置内部成员变量来设置值。如果设置了内部变量,则需要保留它

_someIVar = [thingy retain];
注意,您可以通过KVC调用并触发retain

[self setValue:myValue forKey:@"someProp"];
因此,要回答您最初的问题,不,如果您直接设置iVar,您将不会得到自动保留/释放。如果操作iVar,则必须保留/释放