gpt4 book ai didi

iOS 委托(delegate)和观察者调用的方法是否在主线程执行?

转载 作者:技术小花猫 更新时间:2023-10-29 10:22:08 26 4
gpt4 key购买 nike

抱歉,我不确定这里的语言是否正确,但是当方法被调用时,因为它们要么是委托(delegate)方法,要么是因为被列为观察者的目标而被调用的方法,它们是在 main 上执行的吗?线程?

我想知道我是否可以在这些方法中更改 UI,还是必须将它们包装在

    dispatch_async(dispatch_get_main_queue(), ^{ UI stuff });

TIA:约翰

最佳答案

对于代表来说,这可能会有所不同。如果文档没有指定,那么通常它们是在主线程上发送的。传统上 UIKit 必须在主线程上使用,因此这些委托(delegate)几乎总是从主线程调用。

对于通知,我想你需要这个小片段。

A notification center delivers notifications to observers synchronously. In other words, the postNotification: methods do not return until all observers have received and processed the notification. To send notifications asynchronously use NSNotificationQueue. In a multithreaded application, notifications are always delivered in the thread in which the notification was posted, which may not be the same thread in which an observer registered itself.

来自 http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsnotificationcenter_Class/Reference/Reference.html

最后对于 KVO,通知可以来自其他线程。以下是 Apple 工程师对处理它们的看法。

http://lists.apple.com/archives/cocoa-dev/2007/May/msg00022.html

关于iOS 委托(delegate)和观察者调用的方法是否在主线程执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7880742/

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