简体   繁体   中英

Thread1 exc_bad_access (code =2)… help me

i've been fixing this problem for a few days. but can't seem to get it.. help me out ..

let me explain my situation. Basically, i have navigation controller that contains table view controller and view controller. and i'm making simple phone book app.

And, i have a directory entry declared in extension class

@interface DetailViewController ()

@property DirectoryEntry *dirEntry;

@end

And, in table view, when you click the button it will transfer some data through 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;

}

My Problem occurs when it execute detailCV.dirEntry = nil; it will call my setter in viewController. it says EXC_BAD_ACCESS

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

Thank you in advance..

It's not an EXC_BAD_ACCESS so much as the OS killing your app for smashing the stack. This method is recursing infinitely:

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

Your use of dot notation expands to a setter which should make this more clear.

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

Set the instance variable directly, or let the compiler handle it. Properties in class extensions are automatically synthesized.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM