2

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

Instruments 显示了违规对象的以下历史记录:仪器僵尸展示

除了最后一个(崩溃)之外的所有调用者都来自框架代码(除了 main.m 之外没有黑色名称),所以我看不出错误来自哪里。我在 Instruments 中遗漏了什么吗?我觉得它有很多信息,但也许我看错了部分。

另外两个可能的提示:

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

  2. 控制台显示一条关于“仅添加到内存”的虚假消息,我无法识别/理解: 仪器控制台日志

欢迎任何建议!

引用 locn 的成员时会发生崩溃,这是一个 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
4

1 回答 1

1

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

如果您正在使用实例变量(它们现在是使用 xcode 自动合成的),例如someVariable您使用它来访问它,self.someVariable因此它会被保留。如果不使用,self.您将绕过设置器并且retain未在变量上设置。

于 2013-10-22T17:34:48.143 回答