Re: [問題] XCode5 測試連續建立UIDocument會失敗
我也跑去之前看到這個方法的部落格問
http://goo.gl/KOpCZs
格主說可能是race condition.
他也有提出一個方式,不要建同一個名稱就好
這也是可行沒錯~
我再來試試看其他的方式
有其他發現再來跟大家報告
再謝謝D大提供方式^^
※ 引述《petertom (彼得湯姆)》之銘言:
: 感謝回應..
: 這是一個方向,我會來試試看。
: 只是好奇的是,我是使用XCode5的XCTest來測試...
: 在我的測試程式中,
: 他的流程應該是:
: setup()時建立UIDocuemnt
: testNothing1
: teardown()時刪掉UIDocument
: setup()時建立UIDocuemnt
: testNothing2
: teardown()時刪掉UIDocument
: setup()時建立UIDocuemnt
: testNothing3
: teardown()時刪掉UIDocument
: 前面兩次都是對的
: 到testNothing3時卻在setup()就會回error code 5
: 囧
: ※ 引述《darktt (小朱)》之銘言:
: : 我在使用非同步的控制也有相同問題的經驗,
: : 不過我用的是 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 接第二次與第三次的建立就好了。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.224.193.165
討論串 (同標題文章)
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章