首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >目标C:@property(retain)不调用retain?

目标C:@property(retain)不调用retain?
EN

Stack Overflow用户
提问于 2010-08-13 07:43:12
回答 4查看 322关注 0票数 0

我试图跟踪一个内存分配错误,所以我重写了我的类的retain和release方法。我注意到,当将这个类的一个实例分配给另一个类的属性时,该对象的保留计数增加了,但我重新定义的保留从未被调用过。

这怎么可能呢?(保留)属性是否保留对象而不调用retain?

EN

回答 4

Stack Overflow用户

发布于 2010-08-13 08:45:34

在我的机器中,被覆盖的retain被调用。(我使用的是10.6.4。我在GCC 4.2.1和clang 1.5上都进行了检查。)你能发布你的代码吗?

在内部,retain属性的综合设置器使用objc_setProperty,其源代码可从here获得。如您所见,当属性使用retain时,它最终会调用[newObject retain]

票数 3
EN

Stack Overflow用户

发布于 2010-08-13 09:00:54

是否启用了垃圾收集?我不相信retain是在GC下调用的。

票数 0
EN

Stack Overflow用户

发布于 2012-07-17 07:52:31

如果不使用self (self.yourproperty),它不会增加保留计数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3472878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档