ios – 返回dispatch_async获取的变量

ios – 返回dispatch_async获取的变量,第1张

概述参见英文答案 > Return value for function inside a block                                    3个 基本上:一个方法需要返回一个在dispatch_async中获取的NSDictionary.这是我尝试过的: - (NSDictionary *)fetchNSDictionary { dispatch_queue_ 参见英文答案 > Return value for function inside a block                                    3个
基本上:一个方法需要返回一个在dispatch_async中获取的NSDictionary.这是我尝试过的:

- (NSDictionary *)fetchNSDictionary {    dispatch_queue_t Queue = dispatch_queue_create("Dictionary fetcher",NulL);    dispatch_async(Queue,^{        NSDictionary *dict = ...        dispatch_async(dispatch_get_main_queue(),^{            return dict;        )};    )};}

结果:

Incompatible block pointer types passing 'NSDictionary *(^)(voID)' to parameter of type 'dispatch_block_t' (aka 'voID (^)(voID)')

有任何想法吗?

解决方法 当你说return dict;时,你实际上是在尝试将dict返回给调度块的调用者(运行后台asyncs的自动进程) – 这不起作用.

由于您使用的是异步方法,因此无法将块中接收的数据返回给您启动网络 *** 作的方法.到调用该块中的代码时,系统执行该方法的时间很长.

你需要做的是设置一个委托系统 – 如果这是一个帮助类,你可以添加一个协议,包括像dIDFinishLoadingStuff:(NSDictionary *)这样的方法.

然后你会改变

- (NSData *) fetchNSDictionary{...}

喜欢的东西

- (voID)getDictionaryWithDelegate:(NSObject<StuffgetterProtocol> *)delegate{...}

而不是返回dict;,你会说:

[delegate dIDFinishLoadingStuff:dict];

当然,在您调用它的任何类中实现委托方法:

- (voID)dIDFinishLoadingStuff:(NSDictionary *)stuff{    //do something with stuff}
总结

以上是内存溢出为你收集整理的ios – 返回dispatch_async获取的变量全部内容,希望文章能够帮你解决ios – 返回dispatch_async获取的变量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1069432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存