gpt4 book ai didi

ios - 没有运行循环的线程

转载 作者:可可西里 更新时间:2023-11-01 06:25:08 25 4
gpt4 key购买 nike

我正在阅读 Core Animation Programming Guide 和“交易”一章,我看到了这个

Important: When modifying layer properties from threads that don’thave a runloop, you must use explicit transactions.

但来自 Apple 的 documentation on NSRunLoop

Your application cannot either create or explicitly manage NSRunLoopobjects. Each NSThread object, including the application’s mainthread, has an NSRunLoop object automatically created for it asneeded.

不是说每个线程都有runloop吗?或者不是由 NSThread 创建的线程,例如 POSIX 的 pthread

最佳答案

它说“每个 NSThread 对象,包括应用程序的主线程,都有一个根据需要自动为其创建的 NSRunLoop 对象。”

如果您不尝试访问线程的运行循环,系统将不会为该线程创建运行循环。

如果你不执行 [[NSRunLoop currentRunLoop] run] (或类似的东西),你的线程将不会运行它的运行循环。

UIApplicationMain 函数负责主线程的处理。对于您创建的线程,如果您希望线程的 run loop 有任何效果,则需要运行该线程的 run loop。

这是(我认为)在 Core Animation 的情况下发生的事情,当您不使用显式事务时。它开始一个事务,并向当前线程的运行循环注册一个回调以提交它。 (如有必要,这将为当前线程创建一个运行循环。)如果您没有运行线程的运行循环,则永远不会调用该回调。

关于ios - 没有运行循环的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14152164/

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