gpt4 book ai didi

iphone - 使用 NSPredicate 过滤数组导致第二次尝试 exc_bad_access

转载 作者:行者123 更新时间:2023-11-28 23:05:19 25 4
gpt4 key购买 nike

我正在使用以下代码来填充 UITableViewController

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
NSString *selectedWord;

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}

ResultDetail *detail = [[[GameStore defaultStore] currentResultDetail] objectAtIndex:[indexPath row]];

if([[detail selectedWord] isEqualToString:@" "])
{
selectedWord = @" selected: n/a";
}
else{
selectedWord = [NSString stringWithFormat:@" selected: %@", [[detail selectedWord] substringFromIndex:4]];
}
[[cell textLabel] setText:[NSString stringWithFormat:@" %@ (score: %d/4)",[detail word],[detail score]]];
[[cell detailTextLabel] setText:selectedWord];

detail = nil;
[detail release];
selectedWord = nil;
[selectedWord release];

return cell;
}

鉴于之前未请求 currentResultDetail 的值,以上代码运行良好。

这是 currentResultDetail 的代码

-(NSArray *)currentResultDetail{

    NSLog(@"predicate: resultid == %d", [[GameStore defaultStore] currentResultId]);
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"resultId == %d", [[GameStore defaultStore] currentResultId] ];
NSArray *filtered = [[[GameStore defaultStore] allResults] filteredArrayUsingPredicate:predicate]; // failed here but only if currentResultId has been requested before.

predicate = nil;
[predicate release];
return [[filtered objectAtIndex:0] resultDetails];
}

上面的代码在下面一行失败了:

NSArray *filtered  = [[[GameStore defaultStore] allResults] filteredArrayUsingPredicate:predicate];

所以基本上,如果用户按顺序请求 currentResultId 1、2、3、4、5、6、7 的 currentResultDetail,它工作正常。但是如果他们请求 1,2,3,4,5,1 它就会崩溃。

关于为什么会发生这种情况的任何指示?

最佳答案

您的谓词返回自动释放。不要手动释放它,否则当 autoreleasepool 试图释放它时你会崩溃。

关于iphone - 使用 NSPredicate 过滤数组导致第二次尝试 exc_bad_access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9388559/

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