0

exc_bad_access エラーを受け取った後、次のチュートリアルを読みました: http://www.ioslearner.com/debugging-exc_bad_access-error-xcode-instruments/手順に従いました:

  • 実行プロファイル
  • ゾンビを選択

私のコンピューターでは、Zomie 信号が受信されないことを除いて、すべて同じように見えます。

ステップを忘れていないことを確認するために、チュートリアルで提供されているサンプル コードで試してみました。あそこにゾンビ信号が見える

では、Xcode -> Profile を使用してプロジェクトでゾンビ信号を取得するにはどうすればよいですか?

これは私が使用するサンプルコードです:

2 つのリリースでエラーが発生することは承知しています。ここでも問題は、Xcode を使用してプロファイルで「ゾンビ メッセージ」を取得する方法です。

NSArray *currentRestaurant = [restaurants objectAtIndex:i];
RestauInfo *restauInfo = [NSEntityDescription
                         insertNewObjectForEntityForName:@"RestauInfo" 
                         inManagedObjectContext:context];
[restauInfo release];
restauInfo.Name = [currentRestaurant objectAtIndex:0];
restauInfo.Cuisine = [currentRestaurant objectAtIndex:1];
NSError *error;
if (![context save:&error]) {
    NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
[restauInfo release];// - this release would cause an EXC_BAD_ACCESS

もう 1 つの質問は次のとおりです。最初のリリース後に restauInfo にアクセスしたときではなく、2 番目のリリースで bad_access を取得するのはなぜですか?

4

2 に答える 2

1

メモリ管理の障害を検出する別の方法を見つけました。

Xcodeでは、「実行」、「テスト」、「プロファイル」、および「分析」を選択できます
(左上隅にある実行ボタンを押したままにします)

分析を実行すると、次のようなメモリ管理エラーが明らかになります

  • リリースしすぎ
  • 漏れる
于 2012-10-11T07:12:22.847 に答える
0

自動解放されたオブジェクトであるrestauInfoを過剰に解放しており、-release手動で2回呼び出すと、クラッシュが発生します。

http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/CoreDataFramework/Classes/NSEntityDescription_Class/NSEntityDescription.html

于 2012-10-05T07:41:39.050 に答える