看板 MacDev 關於我們 聯絡資訊
我在使用非同步的控制也有相同問題的經驗, 不過我用的是 NSArray enumerateObjectsUsingBlock: ,它也是採用非同步的方式, 我使用這個是要將選到的多個檔案透過網路上傳某個地方, 因為上傳的時候必須要一個一個傳,所以這時後因為非同步的關係, 全部檔案都一起上去了。 簡單介紹到此為止, 我想說的是,你想等待非同步做完才回傳的話,你只能利用 block 做回傳的動作, 我測試過的用 while 與 NSLock 都沒有作用, 尤其是 while 在 compiler 的過程中為了避免造成無窮迴圈,所以做了點手腳, 所以你該做的是將 UIManagedDocument 的 saveToURL:forSaveOperation: 回傳的 block 接上自己的做的 block 才行。 像是這樣子 - (void)createTestDocumentWithResultBlock:(void (^) void)resultBlock { NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; url = [url URLByAppendingPathComponent:@"TestDocument"]; self.document = [[UIManagedDocument alloc] initWithFileURL:url]; [self.document saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success){ if (success) { resultBlock(); NSLog(@"Create document successfully"); } }]; } 之後在 block 接第二次與第三次的建立就好了。 -- #1ID_Wqk2 (iPhone) [ptt.cc] [問題] 記錄天數的app
xinya707:Days matter 倒數忌日都有 09/17 14:40
xinya707:記日 09/17 14:41
Decill:一樓我知道是輸入法問題 不過我還是忍不住笑了 09/17 14:44
happyfuture:1F好嚇人阿XD 09/17 14:46
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.114.179.66