即使属性设置为retain,从实现中删除retain也会崩溃应用程序

时间:2010-08-26 09:06:20

标签: objective-c

此问题来自previous问题。然而,stackoverflow使我免于评论 - 就像它有时会阻止我在我自己的问题上设置正确的答案。

无论如何,我的申请中发生了一些奇怪的事情。我有一个房产:

@property (nonatomic, retain) NSMutableArray *hotelList; //I also synthesize it

这就是我设置属性的方式:

- (void)populateHotelList
{
    SearchWebServiceController *searchWS = [[SearchWebServiceController alloc]init]; 

    //If I remove this retain the App crashes
    hotelList = [[searchWS getHotelsByRegionCode:@"12345" AndByKid:@"12345"] retain]; 

    [searchWS release];
}

但是,如果我删除了保留我的应用程序崩溃。但根据Apple文档,我不需要保留它吗?!

这是方法的实现:

- (NSMutableArray *)getHotelsByRegionCode:(NSString *)regionCode 
                                 AndByKid:(NSString *)Kid
{
    NSMutableArray *result = [[NSMutableArray alloc]init];

    ...

    return [result autorelease];
}

任何人都可以帮忙!

2 个答案:

答案 0 :(得分:0)

您必须保留它,因为您的方法返回将在下一个事件循环中销毁的autorelease对象。

答案 1 :(得分:0)

添加了自我限定符并且它有效。

self.hotelList = [searchWS getHotelsByRegionCode:@“12345”AndByKid:@“12345”];

感谢spbfox!