不要赋予属性变量遵循财产的行为?(Do variables assigned to properti

2019-09-27 03:15发布

寻找一点点澄清时,“链接”,以实例变量的Objective-C的属性是如何工作的。 我的困惑,从如何可以通过设置等于一个实例变量的属性茎@synthesize指令,像...

@synthesize someProp = _someIVar;

现在,如果我someProp是都喜欢...

@property (retain,readonly) SomeClass* someProp

...将这个...

-(id)initWithAutoreleasedInstanceOfSomeClass:(SomeClass*)thingThatIsAutoreleased {
    self = [super init];
    if(self) {
         _someIVar = thingThatIsAutoreleased;
    }
    return self;
}

...因为thingThatIsAutoreleased被保留?

坦克!

Answer 1:

因为它是只读的,你不会有一个二传手,但你可以通过设置内部成员变量设置的值。 如果设置了内部VAR,那么你就需要把它保留下来。

_someIVar = [thingy retain];

请注意,您可以通过拨打KVC,并得到保留触发

[self setValue:myValue forKey:@"someProp"];

因此,要回答你原来的问题,不,你不会,如果你直接设置伊娃得到自动保留/释放。 你必须保留/释放,如果你操纵伊娃。



文章来源: Do variables assigned to properties follow the behavior of that property?