2015-04-23 23 views
0

我在嘗試使用以下代碼獲取元數據Dropbox dir,調用loadMetadataDropbox API並希望callback(loadedMetadata)在數據位於設備中時被調用。這是代碼:以異步模式在類屬性中獲取Dropbox元數據

_semaphore = dispatch_semaphore_create(0); 

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){ 
     NSLog(@"loadMetadata() in async block"); 

     [self.restClient loadMetadata:@"/"]; 
}); 


dispatch_semaphore_wait(_semaphore, DISPATCH_TIME_FOREVER); 

正如你所看到的,我調用異步模式,獲取元數據在一個屬性,然後返回其他方法。我提出以下呼叫loadedMetadata回調:

dispatch_semaphore_signal(_semaphore); 

好,這裏的問題是,loadedMetadata回調永遠不會調用。我不知道爲什麼,但我放在loadedMetadata的痕跡永遠不會打印出來,並且application is freeze(等待加載的元數據信號)。我以DISPTACH_TIME_FOREVER爲例,請不要考慮您的想法。

回答

0

https://www.dropbox.com/developers/core/start/ios

請務必與從主線程或具有運行環路 線程DBRestClient方法。否則委託方法將不會被調用 。

您應該從主線程調用loadMetadata。實際的操作已經是異步了。

+0

此調用的API V2版本是什麼? –