离开并返回应用程序后iPhone应用程序崩溃

时间:2013-10-22 17:12:42

标签: iphone ios objective-c crash geolocation

我在使用位置服务的iPhone应用程序中发生了一次奇怪的崩溃。当我离开应用程序(通过按下主页按钮)并立即返回(通过单击应用程序图标)它会获得EXC_BAD_ACCESS,显然是因为一个对象变成了一个僵尸。

仪器显示违规对象的以下历史记录:Instruments Zombies display

除了最后一个(崩溃)之外的所有调用者都来自框架代码(除了main.m以外没有黑名字),所以我看不出错误的来源。我错过了仪器中的东西吗?我觉得它有很多信息,但也许我看错了。

另外两个可能的提示:

  1. 我不认为这发生在iOS 5之前

  2. 控制台显示有关“仅添加内存”的虚假消息,我无法识别/理解: Instruments console log

  3. 欢迎任何建议!

    引用lococation的成员时会发生崩溃,这是一个ACLocation对象:

    @property(nonatomic,retain)ACLocation *locn;
            emailBody = [NSString stringWithFormat:
                            NSLocalizedString(@"%@\nLocation: %@, %@, %@",@"Email text header3"),
                            emailBody,
                            locn.ACLocality,
                            locn.ACAdministrativeArea,
                            locn.ACCountry
                         ];
    

    ACLocation定义为:

    @interface ACLocation : NSObject <CLLocationManagerDelegate>  {
        double ACLatitude;
        double ACLongitude;
        double ACAltitude;
        double ACAltitudeAccuracy;
        NSString *ACLocality;
        NSString *ACAdministrativeArea;
        NSString *ACCountry;
    }  
    @property (nonatomic)double ACLatitude;  
    @property (nonatomic)double ACLongitude;  
    @property (nonatomic)double ACAltitude;  
    @property (nonatomic)double ACAltitudeAccuracy;  
    @property (nonatomic,retain)NSString *ACLocality;  
    @property (nonatomic,retain)NSString *ACAdministrativeArea;  
    @property (nonatomic,retain)NSString *ACCountry;
    @end
    

1 个答案:

答案 0 :(得分:1)

您有一个属性,您应该拥有。查看您的属性并将其更改为strong。

如果您正在使用实例变量(它们现在通过xcode自动合成),例如someVariable,您可以使用self.someVariable访问它,以便保留它。在不使用self.的情况下,您绕过了设置器,并且未在变量上设置retain