gpt4 book ai didi

crash - NSMutableArray,removeFromArray和发行版,为什么会崩溃?

转载 作者:行者123 更新时间:2023-12-03 17:43:00 28 4
gpt4 key购买 nike

下面的方法用于清除空白页的日志。

// self.pages property declaratioN, this is on the header
@property(nonatomic, retain) NSMutableArray *pages;

// method that crashes
- (void)cleanup {

NSMutableArray *pagesToRemove = [[NSMutableArray alloc] init];
for (int n = [self.pages count]-1; n >= 0; n--) {
JournalPage *page = [self.pages objectAtIndex:n];
if (![page isEmpty]) {
break;
} else {
if (([self.pages count] - ([pagesToRemove count] + 1) > 2)) {
[pagesToRemove addObject:page];
} else {
break;
}
}

}

if ([pagesToRemove count] % 2 != 0) {
[pagesToRemove removeLastObject];
}
[self.pages removeObjectsInArray:pagesToRemove];
[pagesToRemove release]; // this line makes the app crash
}

释放 pagesToRemove会导致崩溃。如果我删除 [pageToRemove release],并在分配/初始化 NSMutableArray实例时改用autorelease,也会发生崩溃。

没有发布 pageToRemove的代码可以工作,但是我看到了泄漏,而clang分析器也看到了。
该代码是否泄漏?如果没有,为什么?

最佳答案

您的崩溃器中有错别字:

[pageToRemove release]; // this line makes the app crash

请注意,它说的是pageToRemove,而不是页面 ToRemove。 ;)

关于crash - NSMutableArray,removeFromArray和发行版,为什么会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4744923/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com