我有以下2个代码段。 假设我有一个Parent类,在Parent.h类中我有
@property (retain) NSMutableArray *childrens;
我正确地在.m文件中合成它。 在Parent.m文件中假设
- (void)dealloc
{
[childrens release];
[super dealloc];
}
在另一个课程中,我这样宣布。
1
Parent *p = [[Parent alloc] init];
p.chidlrens = [[NSMutableArray alloc] init];
// do some other stuff
2
Parent *p = [[Parent alloc] init];
NSMutableArray *childArray = [[NSMutableArray alloc] init];
p.childrens = childArray;
[childArray release];
从上述2种方法中,方法1中是否存在泄漏?
答案 0 :(得分:5)
是的,方法1中存在泄漏。您分配NSMutableArray但不释放它。
答案 1 :(得分:2)
虽然没有回答你的问题,但我建议使用Parent init并在其init方法中分配数组,因此你的代码在别处不必担心检查它是否已经创建并执行它。那么你不需要使用Parent担心Parent的内存管理的类 - Parent可以这样做。
答案 2 :(得分:1)
一般规则是释放你在做什么的alloc,init on。
但要进行构建+分析以获得一些“潜在的”泄漏。 如果你想100%确定,请通过泄漏运行
答案 3 :(得分:1)
在没有人帮助的情况下,您可以检查泄漏的位置。例如,使用任何插件。我使用deleaker并确切知道内存泄漏的位置。