知道为什么这段代码会给我一个内存泄漏?正如你所看到的,我已经没有想法如何阻止它。
- (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。
由于
答案 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
的本地所有权......