簡體   English   中英

Thread1 exc_bad_access(代碼= 2)…幫助我

[英]Thread1 exc_bad_access (code =2)… help me

我已經解決了幾天這個問題。 但似乎無法得到..幫助我..

讓我解釋一下我的情況。 基本上,我有包含表視圖控制器和視圖控制器的導航控制器。 而且我正在制作簡單的電話簿應用程序。

而且,我在擴展類中聲明了一個目錄條目

@interface DetailViewController ()

@property DirectoryEntry *dirEntry;

@end

並且,在表格視圖中,當您單擊按鈕時,它將通過segue傳輸一些數據

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    DetailViewController *detailCV = [segue destinationViewController];

    if ([segue.identifier isEqualToString:@"cellToDetail"]) {

        [detailCV setDirEntry: [self.pbArray objectAtIndex:[self.tableView     indexPathForSelectedRow].row]];

    } else {

        detailCV.dirEntry = nil;

    }

    //designate delegate !!!
    detailCV.delegate = self;

}

我的問題在執行detailCV.dirEntry = nil時發生 它將在viewController中調用我的setter。 說EXC_BAD_ACCESS

 -(void) setDirEntry:(DirectoryEntry *) dirEntry {
    self.dirEntry  = dirEntry;
}

先感謝您..

它不是EXC_BAD_ACCESS,而是OS殺死您的應用以破壞堆棧而已。 此方法無限遞歸:

-(void) setDirEntry:(DirectoryEntry *) dirEntry {
    self.dirEntry  = dirEntry;
}

您對點表示法的使用將擴展為設置器,這應該使它更加清楚。

-(void) setDirEntry:(DirectoryEntry *) dirEntry {
    [self setDirEntry:dirEntry];
}

直接設置實例變量,或讓編譯器處理它。 類擴展中的屬性是自動合成的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM