key*_*ind 3 nsthread runloop ios
我正在阅读核心动画编程指南,在"交易"一章中,我看到了这一点
要点:从没有runloop的线程修改图层属性时,必须使用显式事务.
但是来自Apple的NSRunLoop文档
您的应用程序无法创建或显式管理NSRunLoop对象.每个NSThread对象(包括应用程序的主线程)都会根据需要自动为其创建NSRunLoop对象.
这不是说每个线程都有一个runloop吗?或者不是由NSThread创建的线程,例如POSIX的pthread
它说"每个NSThread对象,包括应用程序的主线程,都有一个NSRunLoop根据需要自动为它创建的对象."
如果您没有尝试访问线程的运行循环,系统将不会为该线程创建运行循环.
如果你没有[[NSRunLoop currentRunLoop] run](或类似的东西),你的线程将不会运行其运行循环.
该UIApplicationMain函数负责主线程.对于您创建的线程,如果希望线程的运行循环有效,则需要运行线程的运行循环.
以下是Core Animation的情况(我认为),当您不使用显式事务时.它开始一个事务,并在当前线程的运行循环中注册一个回调来提交它.(如果需要,这将为当前线程创建一个运行循环.)如果你没有运行线程的运行循环,那么永远不会调用该回调.
| 归档时间: |
|
| 查看次数: |
1957 次 |
| 最近记录: |