![](/img/trans.png)
[英]Why does testing an app on an iPhone in Xcode 5/iOS 7 crash with calls to NSLog?
[英]NSLog makes iPhone App crash during Apple App Review
我将我的应用程序提交给iTunesConnect,Apple将给我回复以下崩溃报告:
Thread 2 Crashed:
0 libobjc.A.dylib 0x00003eb8 objc_msgSend + 16
1 Foundation 0x0004c3aa _NSDescriptionWithLocaleFunc + 24
2 CoreFoundation 0x0003d52e _CFStringAppendFormatAndArgumentsAux + 1390
3 CoreFoundation 0x0003ceca _CFStringCreateWithFormatAndArgumentsAux + 66
4 CoreFoundation 0x00073fd6 _CFLogvEx + 34
5 Foundation 0x000661a4 NSLogv + 74
6 Foundation 0x0006614a NSLog + 18
7 mobilescan 0x00039014 -[BlaBlaBlaDao insertCategoryWithId:andName:] (BlaBlaBlaDao.m:110)
当应用程序尝试打印日志时,它会使应用程序崩溃。 这很奇怪,因为在调试模式下,应用程序停止2秒然后打印错误并继续工作......
从应用程序崩溃的BlaBlaBlaDao.m中的第110行我有这些行:
NSLog(@"category, id:%@, name:%@", subcategory.id, subcategory.name);
[subcategory addFreshfoodProductsObject:freshfoodProduct];
NSError *error = nil;
if (![managedObjectContext save:&error]) {
[managedObjectContext rollback];
NSLog(@"error: %@", error);
}
它来自一个Apple的例子......
大家都知道为什么?
谢谢你的帮助 !
在您的格式字符串中,您需要两个对象。 对于日志记录,将调用对象的-description方法。 在尝试打印其中一个对象的描述时,您的应用程序似乎崩溃了。 可能是您的一个或两个属性不是对象,而是标量值。 它也可能是某个属性(如果它是一个对象)在某个时刻被释放,并且您正在发送一个已释放的实例。
除了崩溃之外,不要在要提交到App Store的应用程序中使用NSLog。 它没有理由存在,它所做的就是将文本转储到运行应用程序的每个iPhone的控制台上。 如果我没有弄错的话,所有这些都记录在每个运行它的iPhone上。 不仅如此,它还在不必要地减慢你的应用程序。 在提交应用程序之前删除这些调用,或使用#ifdef将它们本地化为仅调试版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.