2

アプリを 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の例から来ています...

誰もがその理由を知っていますか?

ご協力いただきありがとうございます !

4

1 に答える 1

8

フォーマット文字列では、2 つのオブジェクトが必要です。ロギングの場合、オブジェクトの -description メソッドが呼び出されます。オブジェクトの 1 つの説明を出力しようとすると、アプリケーションがクラッシュするようです。プロパティの 1 つまたは両方がオブジェクトではなく、代わりにスカラー値である可能性があります。プロパティの 1 つがオブジェクトの場合、ある時点で解放され、割り当てが解除されたインスタンスにメッセージを送信している可能性もあります。

クラッシュは別として、App Store に提出するアプリケーションで NSLog を使用しないでください。そこに存在する理由はなく、アプリケーションを実行しているすべての iPhone のコンソールにテキストをダンプするだけです。私が間違っていなければ、これを実行する各 iPhone にすべてが記録されています。それだけでなく、アプリケーションの速度が不必要に低下します。アプリケーションを送信する前にこれらの呼び出しを削除するか、#ifdef を使用してデバッグ ビルドのみにローカライズします。

于 2009-12-12T03:15:04.427 に答える