1

シミュレーターでアプリを起動すると、「エラー: メモリの読み取りに失敗しました」というメッセージが表示されてすぐにクラッシュします。

iPad/iPhone ではすべて正常に動作しますが、単純な「return;」を追加すると、コア データ行の前に、シミュレーターが正常に起動します。

return;
CCAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];

重要!!: そのコードはいつでも実行されず、コンパイルされるだけです。そして、「リターン;」を追加すると 代わりに、別のファイルの同じコア データ接続の前に、正常に実行されます。コアデータか何かへの何らかの最大の「接続」があるように見えますか?

Xcodeのクリーニング(通常およびクリーンビルドフォルダー)、シミュレーターのクリーニング(コンテンツと設定のリセット)を試みましたが、成功しませんでした。

追加の質問: IOS シミュレーターを再インストールする方法はありますか?

4

2 に答える 2

2

「エラー: メモリの読み取りに失敗しました」。今朝、同じメッセージを受け取りました。そして、ブロックに関連する id を見つけました。

私たちが知っているように、クラスがメンバーとして Block を持っている場合、それは次のようになります:

@property(nonatomic, copy)BlockType block;

私の間違いは、ブロックを NSArray インスタンスに追加するときにコピーを使用するのを忘れていたことです。

[array addObject:aBlock];

最後に、これで解決しました:

MyBlockType copy = [aBlock copy];
[array addObject:copy];
[copy release];

幸運を!

Upate Mar/20/1013 別の状況では、「エラー: メモリの読み取りに失敗しました」が発生します。

- (void)blockCalledMethod{
    for (BlockType b in _dictionary) {
        b(self);
    }
}

私の問題を解決する鍵は、.allKeys を使用して NSDictionary を繰り返すことです。しかし、ディクショナリのオブジェクトはブロックなので、ブロックと相対的でなければなりません。

于 2013-02-22T08:01:29.187 に答える