0

私は Core Data も RestKit も初めてです。

いくつかのパフォーマンスの問題があるため、ios5 で同時実行技術を使用したいと考えています。しかし、RestKitと組み合わせるとクラッシュする問題が発生。ここに私のクラッシュコードがあります:

[[RKObjectManager sharedManager] getObjectsAtPath: HOT_PATH
                                       parameters: params
                                          success:
 ^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
    NSManagedObjectContext *newContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
     newContext.parentContext = [self managedContext];
     [newContext performBlock:^{

         Rumor *rumorInOtherContext = (Rumor *)[mappingResult.array lastObject];;
         Rumor *rumor = (Rumor *)[newContext objectWithID:rumorInOtherContext.objectID];

         rumor.updateDate = [NSDate date]; // <- crash at this point.
}];

ただし、私のコードの古いバージョンはクラッシュしません。

[[RKObjectManager sharedManager] getObjectsAtPath: HOT_PATH
                                       parameters: params
                                          success:
 ^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
    Rumor *rumor = (Rumor *)[mappingResult.array lastObject];;
    rumor.updateDate = [NSDate date]; // <- save!
}];

コンソール ダイアログにクラッシュ レポートが表示されませんでした。:(

私のコードは正しいですか?または、同じことを行う別のアプローチはありますか?

4

1 に答える 1

1
  1. 使用している iOS の対象バージョンは何ですか?
  2. どのバージョンの RK を使用していますか?

5.x をターゲットにしている場合、Core Data または Parent-Child Contexts にブロックベースの並行プログラミング コードを使用することはできません。(はい、5.x で iOS に組み込まれましたが、6.x までは機能せず、安全ではありません)

GCDを調べることをお勧めします。

この質問で説明されているように、私はRKに多くの問題を抱えていたため、RKから離れることにしました。

RestKit と NSManagedObject として CoreData に保存

そして、いつクラッシュしたかを示すスタックトレース (デバイスでこれを経験した場合は、[ウィンドウ] -> [オーガナイザー] -> [デバイス] からアクセスできるクラッシュログがあります) は何ですか?

于 2013-03-04T17:34:06.287 に答える