Objective c 分配给属性的变量是否遵循该属性的行为?
想了解一下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
@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,则必须保留/释放