Jim*_*Jim 7 exc-bad-access core-data nsfetchedresultscontroller nszombieenabled
这是我的问题的更新.程序中止时我现在收到此警告. 警告:尝试使用不在框架中的块创建USE_BLOCK_IN_FRAME变量.
我找不到有关这意味着什么的更多信息.
这令我感到困惑.我收到EXC_BAD_ACCESS错误.我有NSZombieEneabled(它帮助解决了早期的问题),但是没有要跟踪的调用堆栈.
我有一些几乎相同的代码,相对于另一个获取的结果控制器.
这似乎与作业实体及其关联的客户实体之间的关系有关.关系是[作业实体] << - > [客户实体].
最初,我看到代码在没有错误的情况下工作,其中对应于所选行的作业实体没有通过关系链接的客户端实体.因此,在失败的情况下,这指向客户端实体,但是当它没有失败时,指针为零.
当我遇到这个问题时,我启动应用程序并直接进入作业选择器视图并选择一个单元格.就在那时,问题就出现了.
我做了一个实验,首先启动应用程序并转到客户端选择器视图,因为知道所有客户端实体都会进行提取.然后我去了工作选择器视图并选择了一个单元格.问题没有发生.
由于我只是尝试将指针传递给已经获取的作业实体,因此我不明白发生了什么.
顺便说一下,在我切换到使用NSFetchedResultsControllers之前,代码工作正常.我喜欢他们能为我做的事情,但这里有一些动态,我还没想到.
日志记录没有向我展示解决问题的任何理解.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
userState.selectedJob = [self.fetchedResultsController objectAtIndexPath:indexPath];
NSLog(@"\n\n(1 Pick) indexPath: %@\n",indexPath);
NSLog(@"\n\n(1 Pick) userState: %@\n",userState);
NSLog(@"\n\nnumber of Objects in job fetchresultscontroller = %d", [[fetchedResultsController fetchedObjects] count] );
NSLog(@"\n\n(1 Pick) selected job: %@\n",[self.fetchedResultsController objectAtIndexPath:indexPath]); // This line is causing the problem...
NSLog(@"\n\n(1 Pick) selected job: %@\n",userState.selectedJob); // Omitting the line above, this line fails
[self.navigationController pushViewController:userState.jobInfoTVC animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
调试输出是
2011-05-07 09:27:04.142 job1[6069:207]
(1 Pick) indexPath: <NSIndexPath 0x5952590> 2 indexes [0, 3]
2011-05-07 09:27:04.142 job1[6069:207]
(1 Pick) userState: <UserStateObject: 0x5919970>
2011-05-07 09:27:04.143 job1[6069:207]
number of Objects in job fetchresultscontroller = 4
(gdb)
Run Code Online (Sandbox Code Playgroud)
最终的代码应该像这样简单,这导致我所有的日志记录:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
userState.selectedJob = [self.fetchedResultsController objectAtIndexPath:indexPath]; // Original failure was at this line
[self.navigationController pushViewController:userState.jobInfoTVC animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
我使用singleton userState来跟踪用户的操作.所以我保留了最后的selectedJob和selectedClient实体指针.在切换到NSFetchedResultsController之前,这个工作正常.
部署目标操作系统版本是否设置为低于 Xcode 4.2 中调试支持的版本?当这种情况发生在我身上时,部署目标已以某种方式更改为 4.1,但我只有 4.3 模拟器,没有对 4.0-4.1 的额外调试支持。
有一些方法可以解决这个问题:
如果您选择前者,可能值得在首选项中勾选复选框以自动下载更新。
| 归档时间: |
|
| 查看次数: |
7593 次 |
| 最近记录: |