消息发送到解除分配的实例!找不到错误

BOb*_*der 0 iphone objective-c release-management

好吧,我正在寻找这个错误,因为2个小时,我只是想弄清楚,请帮助我.我有以下情况我有2个viewcontroller.一个将另一个呈现为类似的模态.

SearchViewController *searchViewController = [[SearchViewController alloc]init];
[searchViewController setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
searchViewController.delegate = self;
searchViewController.senderTag = [sender tag];
[self presentModalViewController:searchViewController animated:YES];
[searchViewController release];
Run Code Online (Sandbox Code Playgroud)

在我的searchviewcontroller中,我在.h文件中执行此操作

BSKmlResult *selectedAirport;
@property (nonatomic, retain) BSKmlResult *selectedAirport;
Run Code Online (Sandbox Code Playgroud)

在.m文件中我合成它,然后像那样设置它

selectedAirport = [self.airportList objectAtIndex:indexPath.row];
Run Code Online (Sandbox Code Playgroud)

然后在这里发布

- (void)dealloc {
  [selectedAirport release];
  [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

在我的SearchViewController的委托方法中,它在第一个viewcontroller中实现,我也提供了SearchViewController我有以下内容

if (controller.selectedAirport) {
            if (departureAirport) {
                [departureAirport release];
            }

        departureAirport = [controller.selectedAirport copy];
}

[self dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

我缩小了错误发生的位置,它位于我的SearchViewController [selectedAirport release]的dealloc中;

但我无法弄清楚我的错误在哪里请帮助

小智 9

selectedAirport = [self.airportList objectAtIndex:indexPath.row];
Run Code Online (Sandbox Code Playgroud)

你不是在这里保留selectedAirport.

将其更改为

self.selectedAirport = [self.airportList objectAtIndex:indexPath.row];
Run Code Online (Sandbox Code Playgroud)

既然你找不到它,可能你不知道这个......

如果您不通过self.memberVariable访问成员变量,则不会访问其属性.因此,它没有得到保留.

当然,你也可以保留它

selectedAirport = [[self.airportList objectAtIndex:indexPath.row] retain];
Run Code Online (Sandbox Code Playgroud)

但是,那么你的财产的用途是什么......

  • 当你使用self.property时,你正在做的是为属性调用setter函数,它不仅仅是property = value.Property = value只是将变量设置为给定值,而setter也可以处理诸如retain/release之类的事情.(理论上可以为getter提供类似的功能,但我不知道任何相关的情况) (2认同)