gpt4 book ai didi

iphone - Cocoa - 从 NSOperation 返回信息

转载 作者:行者123 更新时间:2023-12-03 16:06:59 27 4
gpt4 key购买 nike

我有一个 iPhone 应用程序,它使用 Web 服务从服务器获取数据。我将对 Web 服务的每个调用都放在 NSOperation 子类中,以便可以进行线程化。我的问题是,从已完成的 NSOperation 子类传回信息的推荐方法是什么。我目前正在主方法末尾发送 NSNotification,任何等待 NSOperation 完成的代码都会订阅该通知。然后我将使用 NSNotificationWithName:Object: 的对象部分从操作传回信息。

我不确定是否有更好的方法来做到这一点。我听说过键值编码,然后我可以使用键值观察来检测操作的 isFinished 属性何时更改,但我不确定最佳实践是什么。

我还试图确保我的应用程序是线程安全的,我认为只要我的通知是在主方法末尾发出的,那么通知中的对象就不会出现问题不再在线程中使用,因为它将结束。

最后,我像这样调用通知:

[[NSNotificationCenter defaultCenter] performSelectorOnMainThread:@selector(postNotification:) withObject:[NSNotification notificationWithName:@"notificationName" object:dataObject] waitUntilDone:NO];

最佳答案

我个人通过两种方式做到了这一点。两者都工作得很好。

第一种方法

您可以有一个返回“输出”的函数,并在操作完成后调用该函数。您可以观察 NSOperation 对象上的 isFinished 键,或使用 -[NSOperationQueue waitUntilAllOperationsAreFinished] 来确定操作何时完成。

第二种方式

您可以使用 NSOperation 中的委托(delegate)或目标/操作。只需确保当您调用委托(delegate)函数或触发目标/操作时,您可以使用 -[NSObject PerformSelectorOnMainThread:withObject:waitUntilDone:] 在主线程上执行此操作

关于iphone - Cocoa - 从 NSOperation 返回信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1297733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com