如何避免这种情况下的内存泄漏?

时间:2010-09-16 05:11:14

标签: iphone objective-c

案例1:

-(id)getAnObject{

        Object *someObject = [[Object alloc] init];
       //doing something

        return someObject;

}

案例2:

-(void)dealWithAnObject{
            Object *someObject = [[Object alloc] init];
            [assignTheObjectToOther someObject];

}

案例1和案例2都在XCode中有一些警告,我该怎么办才能处理这两个问题?谢谢。

1 个答案:

答案 0 :(得分:5)

内存管理的黄金法则是:一切都需要知道它拥有哪些对象。只有你能做出这个决定。

我强烈建议您阅读Apple的memory management guide。至少两次。

针对您的具体情况:

  1. getAnObject不会释放它创建的对象。如果您要退货,则需要先autorelease

  2. dealWithAnObject也不会释放其对象。在使用它的函数调用之后,您可以autoreleaserelease。确保使用它的任何内容遵循相同的规则,你就可以了。