我想知道如何正确地执行以下操作:我有一个方法,即返回NSData对象。它得到了NSData对象的UIDocument..这个NSData对象可以变大,因此我希望确保在响应启动之前完全加载它。因此,我想从块本身中返回方法的值。所以就像这样:- (NSData*)getMyData {
MyUIDocument *doc = [[MyUIDocument alloc] initWithFileURL:fileURL];
[doc openWithCompletionHandler:^(BOOL success) {
if (success) {
return doc.myResponseData; // this is to be the return for the method not the block
}
}];}这会导致错误,因为return显然是指block氏return.我如何才能做到这一点,而不必让线程阻塞等待/同时循环呢?谢谢。
3 回答
有只小跳蛙
TA贡献1824条经验 获得超8个赞
getMyData
return
- (void)getMyDataWithCompletion:(void(^)(NSData *data))completion { MyUIDocument *doc = [[MyUIDocument alloc] initWithFileURL:fileURL]; [doc openWithCompletionHandler:^(BOOL success) { completion((success ? doc.myResponseData : nil)); }];}
func getMyData(completion: ((data: NSData?) -> Void) { data = ... completion(data)}
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
- (void)getMyDataWithCompletion:(void(^)(NSData *data, BOOL success))completion{ MyUIDocument *doc = [[MyUIDocument alloc] initWithFileURL:fileURL]; [doc openWithCompletionHandler:^(BOOL success) { completion(doc.myResponseData, success); }];}
- 3 回答
- 0 关注
- 546 浏览
添加回答
举报
0/150
提交
取消