我试图跟踪一个内存分配错误,所以我重写了我的类的retain和release方法。我注意到,当将这个类的一个实例分配给另一个类的属性时,该对象的保留计数增加了,但我重新定义的保留从未被调用过。
这怎么可能呢?(保留)属性是否保留对象而不调用retain?
发布于 2010-08-13 08:45:34
在我的机器中,被覆盖的retain被调用。(我使用的是10.6.4。我在GCC 4.2.1和clang 1.5上都进行了检查。)你能发布你的代码吗?
在内部,retain属性的综合设置器使用objc_setProperty,其源代码可从here获得。如您所见,当属性使用retain时,它最终会调用[newObject retain]。
发布于 2010-08-13 09:00:54
是否启用了垃圾收集?我不相信retain是在GC下调用的。
发布于 2012-07-17 07:52:31
如果不使用self (self.yourproperty),它不会增加保留计数。
https://stackoverflow.com/questions/3472878
复制相似问题