为什么在使用属性访问器时调用我的retain方法

Mel*_*Mel 0 iphone cocoa-touch objective-c

我的对象没有从内存中释放,所以我重写了retain方法并放入一个断点来查看它保留在代码中的哪个位置.

每次使用属性访问器引用对象时,都会调用retain方法.为什么会这样?

color = self.myobject.color

电话保留.

omz*_*omz 7

保留属性的合成属性访问器看起来像这样:

- (UIColor *)color
{
    return [[_color retain] autorelease];
}
Run Code Online (Sandbox Code Playgroud)

因此,您的retain方法被调用,但它与一个平衡autorelease.

有关合成访问器可能看起来如何的示例,请参阅Objective-C编程语言指南中的此代码片段(锁定部分不适用于非原子的情况,但retain-autorelease是相同的).