iPhone应用程序内存泄漏

时间:2010-06-14 19:17:48

标签: iphone nsmutablearray memory-leaks

知道为什么这段代码会给我一个内存泄漏?正如你所看到的,我已经没有想法如何阻止它。

- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    NSArray *allSketches = [project.sketches allObjects];
    NSMutableArray *temp = [[NSMutableArray alloc] initWithArray:allSketches];

    if(sketchesArray != nil) [sketchesArray release];

    [self setSketchesArray:temp];

    [allSketches release];
    allSketches = nil;
    [temp release];
    temp = nil;

}

我还在viewDidDissapear中发布了sketchesArray。我没有使用viewDidLoad和dealloc来初始化/释放这些对象,因为我正在做的事情要求我使用viewWillAppear和viewDidDissapear。

由于

3 个答案:

答案 0 :(得分:1)

通过改为使用它来修复它:

NSArray *allSketches = [project.sketches allObjects];
NSMutableArray *temp = [[NSMutableArray alloc] initWithArray:allSketches];

[self setSketchesArray:temp];

[temp release];

虽然我记得这样做但它之前没有用...奇怪......但是CoreGraphics似乎仍然存在一些内存泄漏。这是正常的吗?

答案 1 :(得分:0)

当你完成它之后,它会被释放到其他地方吗?

[self setSketchesArray:temp];

具体来说,你是在这个函数中释放sketchesArray,但是当你完成视图时,你会在其他地方这样做吗?

答案 2 :(得分:0)

我看不到泄漏,但你有一些可能的过度释放。

nil sketchesArray的发布应在setSketchesArray内进行管理。并且看起来您不具有allSketches的本地所有权......