1

基本的に、カスタム セッターを使用してマスター ビューから詳細ビューにオブジェクトを送信しようとしています。ただし、セッターが詳細ビューで呼び出されるとすぐに、アプリはすぐにクラッシュします。私はデバッグが得意ではありませんが、オブジェクトがセッターに到達していないためだと思います.nilと見なされています。しかし、それについては間違っている可能性があります。

マスター ビューのセグエのコードは次のとおりです。

- (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)
4

1 に答える 1

2

セッターメソッドの変更で:

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

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

現在のコードには、アクセサー メソッドを呼び出す無限ループがあるためです。using の意味を知っていることを確認してくださいself....

于 2013-11-02T18:48:37.257 に答える