2

です。クラッシュ中に発生するエラーは、"Nilモデルを持つNSPersistentStoreCoordinatorを作成できません"です。managedObjectModelは、私は私のアプリで一貫性なくいくつかの時間後にいくつかの時間とクラッシュのために完全に正常に動作します。この特殊なケースのシナリオを、持っているゼロ(nilのモデルでNSPersistentStoreCoordinatorを作成することはできません)

私は私のアプリをデバッグしようとしたmanagedObjectModelは時々NULLを返していることがわかりました。火災に燃料を追加するには、このシナリオは一貫していません。しばらくの間、managedObjectModelは問題ありません。しかし、突然、それはNULLを返す...ここ

は、私が管理オブジェクトモデルを作成するために使用していたコードです。

- (NSManagedObjectModel *)managedObjectModel 
{ 
    if (managedObjectModel_ != nil) { 
     return managedObjectModel_; 
    } 
    NSBundle *newBundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"dataBundle" withExtension:@"bundle"]]; 
    NSString *modelPath = [newBundle pathForResource:@"DataHouse" ofType:@"momd"]; 
    NSURL *modelURL = [NSURL fileURLWithPath:modelPath]; 
    managedObjectModel_ = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 

    NSLog(@"managedObjectModel_ %@", [managedObjectModel_ entities]); 

    return managedObjectModel_; 
} 

上記のように、いくつかの特別な要件のために、私は私を配置しました。 別のバンドルファイルをxcdataModeldし、そこからそれを参照します。私は打たれ、すべての

+1

変数managedObjectModel_はどのように宣言されていますか? iVarとして?それはどこに保持されていますか?これは記憶上の問題のようなにおいがする。 – Rayfleck

+0

ヒントレイのために本当にありがとう。実際の問題は、メモリの問題に起因することが判明しました... –

答えて

1

まず、あなたがnilmanagedObjectModel_をリセットしたことがないことを確認してくださいおかげで....いくつかの助けを必要としました。ソースコードで「managedObjectModel_ =」を検索すると、唯一の結果は投稿したmanagedObjectModelコードにあるはずです。

第2に、managedObjectModel_が外部からアクセスできないか、または(managedObjectModelをプロパティとして公開する)読み取り専用であることを確認してください。

第三に、1とコアデータスタックを管理するクラスのインスタンスが1つだけありますことを確認してください。メインウィンドウのnibで初期化されたUIApplicationデリゲートの場合は、プログラムで作成しないでください。それがシングルトンの場合は、本当に単一のインスタンスが存在するかどうかを確認します。

あなたはすべてが正しいと絶対に確信している場合は、それがより深く掘りに行く時間です。 GDBのウォッチポイントをmanagedObjectModel_に設定してみてください。

コード内で最悪のことは、コアデータスタックマネージャが占有するメモリを上書きするような種類のmemset/memmoveの操作です。しかし、この種のエラーはあまりにもランダムなので、常に特定のメモリアドレスをヒットすることはないので、私はそれにはカウントしません。

+0

問題は、ポイント3または2のいずれかである可能性があります –

+0

問題は、メモリの問題が原因で判明しました。私はいくつかのメモリリークがあるため、コアデータのオブジェクトを解放していませんでした。私は問題を修正し、今はもう問題はない。しかし、貴重な情報のおかげで、本当にありがとう...あなたの答えを受け入れる.. :) –

+0

私は最初のポイントを確認するために使用しようと何も見つかりませんでした!それについて私は何ができますか? – shawndreck

関連する問題

 関連する問題