当前位置:  开发笔记 > 编程语言 > 正文

这句话我有泄漏吗?

如何解决《这句话我有泄漏吗?》经验,为你挑选了2个好方法。

声明是:

//Pass the copy onto the child controller
self.childController.theFoodFacilityCopy = [self.theFoodFacility copy];

我的财产设定为:

@property (nonatomic, retain) FoodFacility *theFoodFacilityCopy;

我认为我有泄漏的原因是因为copy保留了值,然后我的点语法属性也保留了该值.双重保留.

编写上述陈述的正确方法是什么?



1> Alex Wayne..:

是的,你确实有泄漏.

SomeClass *someObj = [self.theFoodFacility copy];
self.childController.theFoodFacilityCopy = someObj;
[someObj release];

这也反映了初始化对象的推荐方法:

SomeClass *someObj = [[SomeClass alloc] init];
self.someProperty = someObj;
[someObj release];

在这两种情况下,第一行返回一个保留计数为1的对象,之后您将对其进行相同的处理.



2> Jens Ayton..:

正如其他人所说,这确实是一个漏洞.如果您希望以这种方式使用副本,则可能会将您的属性声明为副本,而合成访问者将为您完成工作.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有