自定义设置器,用于在 iPhone 母版/细节情节提要中看不到我发送给它的对象



基本上,我正在尝试通过自定义资源库将对象从主视图发送到详细信息视图。但是,一旦在详细信息视图中调用资源库,应用就会立即崩溃。我不太擅长调试,但我认为这是因为对象没有进入设置器 - 它将其视为零。不过,这可能是错误的。

下面是主视图中 segue 的代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showDetail"]) {
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    CCNewsItem *theNewsItem = self.listOfNewsItems[indexPath.row];
    NSLog(@"Preparing to pass: %@", theNewsItem);
    [[segue destinationViewController] setSelectedNewsItem:theNewsItem];
    }
}

这是详细信息视图中的二传手:

   - (void)setSelectedNewsItem:(CCNewsItem *)newItem
{
    if (self.selectedNewsItem != newItem) {
    self.selectedNewsItem = newItem;
    // Update the view.
    [self configureView];
    }
}

它正好在- (void)setSelectedNewsItem:(CCNewsItem *)newItem线上崩溃。我已经超级确定正在传递的对象是有效的(我记录它以仔细检查,一切似乎都很好),但似乎它要么没有到达设置器,要么在击中它时以某种方式爆炸。

有什么想法吗?谢谢!

根据要求,这是日志/异常

这是我的 NSLog 在我尝试传递的对象上显示的内容:

2013-11-02 14:18:23.660 Curtis Consulting[14862:60b] Preparing to pass: <CCNewsItem: 0x14e70580>

当应用程序停在二传手的第一行时(我不确定为什么;我禁用了所有断点),它将 newItem(传递的对象)的值显示为:

newItem CCNewsItem *    nil 0x00000000
NSObject    NSObject        
_headline   NSString *  nil 
_body   NSString *  nil 
_url    NSURL * nil 

编辑 2

因为据我所知,无法复制它显示的错误(在右侧的绿色栏中,但我没有打开任何断点),这是我的转录:

Thread 1: EXC_BAD_ACCESS (code=2, address=0x27c84ff8)

在您的二传手方法中更改:

if (self.selectedNewsItem != newItem) {
self.selectedNewsItem = newItem;

if (_selectedNewsItem != newItem) {
_selectedNewsItem = newItem;

因为当前代码有一个无限循环调用访问器方法。确保您知道使用self.意味着什么...

最新更新