2012-03-19 22 views
3

アプリの起動時に、私はテーブルビューを表示します。各行には、管理対象オブジェクトのデータが何らかの形で表示されます。 1人の顧客がアプリの起動時にクラッシュを報告しています。私は彼のクラッシュログを見て、私が[NSManagedObject valueForKey:]メソッドをcellForRowAtIndexPathメソッドの中で使うところまで追跡することができました。アプリは[NSManagedObject valueForUndefinedKey:]の例外でクラッシュします。起動時にvalueForUndefinedKeyエラーでアプリがクラッシュする

どのように1000台のデバイスで1つのデバイスでこの問題が発生する可能性がありますか?同じバージョンのiOSとアプリを実行していると、自分のデバイスでそのバージョンを真似ることができませんでした。何が間違っていた可能性がありますか?

Last Exception Backtrace: 

0 CoreFoundation     0x3549e88f __exceptionPreprocess + 163 
1 libobjc.A.dylib     0x368c5259 objc_exception_throw + 33 
2 CoreFoundation     0x3549e5c5 -[NSException init] + 1 
3 CoreData      0x329d3b23 -[NSManagedObject valueForUndefinedKey:] + 327 
4 Foundation      0x312b59d1 _NSGetUsingKeyValueGetter + 125 
5 CoreData      0x3298d995 -[NSManagedObject valueForKey:] + 121 
6 MyApp     0x0000c513 -[Activity isOn:] (Activity.m:371) 
7 MyApp     0x0000beaf -[Activity firstMarkableDate] (Activity.m:163) 
8 MyApp     0x0000c0cb -[Activity statusString] (Activity.m:220) 
9 MyApp     0x0000bd51 -[Activity statusColor] (Activity.m:139) 
10 MyApp     0x00004af1 -[ActivityListViewController tableView:cellForRowAtIndexPath:] (ActivityListViewController.m:418) 
11 UIKit       0x3251d0a3 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 547 
+0

いつでもアプリを更新しましたか?言い換えれば、それはあなたのコアデータモデルのバージョン変更ですか? – Till

+0

アプリのコアデータスキーマは、どのアプリケーションでも変更されていませんでした。私たちのデバイス(非開発デバイス)のすべてで同じアプリケーションバージョンが完璧に動作します – Anand

+0

'Activity'を見る必要があります。' -isOn: 'が実装されていないようです(コロンに注意してください)。 –

答えて

0

これはメモリ管理の問題です。 -[Activity isOn:]を参照して、valueForKey:を呼び出します。あなたが送ったオブジェクトvalueForKey:は明らかに間違ったクラスです。オブジェクトがどこから来ているかを見てください。

オブジェクトが解放され、そのメモリアドレスがtracknameキーでKVOに準拠していない別のクラスのオブジェクトによって占有される可能性があります。その場合、私はあなたのアプリがEXC_BAD_ACCESSをさらに頻繁に取得すると確信しています。

どうしてですか? NSManagedObjectsは、その寿命に関して多くの微妙な点があります。たとえば、アプリの他の部分で削除される可能性があります。そのため、常に期待して適切に行動する必要があります。

これが正しい方向に向いてくれることを願っています。

関連する問題