我在使用定位服务的 iPhone 应用程序中发生了奇怪的崩溃。当我离开应用程序(通过按主页按钮)并立即返回(通过单击应用程序图标)时,它会得到一个 EXC_BAD_ACCESS,显然是因为一个对象已经变成了僵尸。
仪器显示违规对象的以下历史记录:
除了最后一个(崩溃)之外的所有调用者都来自框架代码(除了 main.m 之外没有黑色名称),所以我看不出错误来自哪里。我在 Instruments 中遗漏了什么吗?我觉得它有很多信息,但也许我看错了部分。
另外两个可能的提示:
我认为这在 iOS 5 之前不会发生
控制台显示一条关于“仅添加到内存”的虚假消息,我无法识别/理解:
欢迎提出任何建议!
在引用 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
你有一个weak属性,而你应该有一个strong。查看您的属性并将其更改为强。
如果您正在使用实例变量(它们现在使用 xcode 自动合成),例如 someVariable
,您可以使用 self.someVariable
访问它,以便保留它。不使用 self.
您将绕过 setter ,并且未在变量上设置 retain
。
关于iPhone应用程序在离开并返回应用程序后崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19524252/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |