根据仪器,以下有泄漏,我不明白为什么。任何人都可以协助吗?任何帮助赞赏。谢谢。
- (User *) findUser:(NSString *)userName
{
NSFetchRequest *userFetch = [NSFetchRequest fetchRequestWithEntityName:@"User"];
[userFetch setPredicate:[NSPredicate predicateWithFormat:@"userName = %@", userName]];
NSError *error = nil;
NSArray *fetchedUser = [[self context] executeFetchRequest:userFetch error:&error];
if (error)
{
NSLog(@"findUser Error: %@", error);
return nil;
}
else if ([fetchedUser count] < 1)
{
return nil;
}
else
{
if ([fetchedUser count] != 1) // should always be zero or 1.
{
return nil;
}
User *user = (User *)[fetchedUser objectAtIndex:0];
return user;
}
}
电话会在这里发生:
- (void)tableView:(UITableView *)tv didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
. . .
NSString *uName = ((User *)[currentUserList objectAtIndex:indexPath.row]).userName;
uManager.userObj = [svoDataHelper findUser:uName];
[detail didSelectUserWithName:[uManager userName]];
}
答案 0 :(得分:1)
您的代码非常详细。在获取后尝试此操作:(我使用的是result
而不是fetchedUser
)。
return result.count == 1 ? result.firstObject : nil;
泄漏可能发生在其他地方,很可能发生在不透明的数据助手和数据管理器类中。一种策略是尝试在didSelectRowAtIndexPath
中进行提取,看看你是否仍然得到泄漏。