我有一個NSOperation,我把一個隊列。 NSOperation會執行一些長時間運行的照片處理,然後將信息/元數據保存在該照片的核心數據中。在我的自定義的主要方法的NSOperation類是在哪裏執行的代碼下面的框魔法記錄背景保存似乎阻止用戶界面
-(void)main
{
//CODE ABOVE HANDLES PHOTO PROCESSING...
//........
//THEN I SAVE ALL DATA BELOW LIKE SO
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
Post *post = [Post createInContext:localContext];
//set about 15 pieces of data, all strings and floats
post.XXXX = XXXXX;
post.DDDD = DDDDD;
etc...
} completion:^(BOOL success, NSError *error) {
NSLog(@"Done saving");
}];
}
我的問題是,即使只有3張照片時,它保存它真的凍結我的UI。我會認爲在NSOperation中執行此操作會很好。
我應該補充說,每個NSOperation處理一張照片,所以有時隊列可以有5-10張照片,但我不認爲這會產生任何影響,即使只有三個像我說的凍結UI。
謝謝你的幫助。
UPDATE:------------ * --------------
我切換到2.2版本,但是,這似乎是阻止用戶界面甚至更...現在我正在使用
-(void)main
{
NSManagedObjectContext *localContext = [NSManagedObjectContext contextForCurrentThread];
//CODE BELOW HANDLES PHOTO PROCESSING...
//........
//THEN I SAVE ALL DATA BELOW LIKE SO
Post *post = [Post createInContext:localContext];
//set about 15 pieces of data, all strings and floats
post.XXXX = XXXXX;
post.DDDD = DDDDD;
[localContext saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error) {
}];
}
這一切都在我的NSOperation類中完成,我做錯了什麼?
你如何開始操作? –
你有沒有簡介確定延遲的確切位置? – Wain
只要處理髮生在主線程中,你的UI就會凍結。 – mrosales