我读核心动画编程指南和“交易”的章节中,我看到这个线程没有runloop
重要:当从线程修改图层属性不 有一个runloop,你必须使用明确的事务。
但是从苹果公司的documentation on NSRunLoop
您的应用程序不能创建或显式管理NSRunLoop 对象。每个NSThread对象(包括应用程序的主线程 )都有一个为其自动创建的NSRunLoop对象,如 所需。
是不是说每个线程都有runloop?或者是不是由NSThread创建的线程,如POSIX的并行线程
我读核心动画编程指南和“交易”的章节中,我看到这个线程没有runloop
重要:当从线程修改图层属性不 有一个runloop,你必须使用明确的事务。
但是从苹果公司的documentation on NSRunLoop
您的应用程序不能创建或显式管理NSRunLoop 对象。每个NSThread对象(包括应用程序的主线程 )都有一个为其自动创建的NSRunLoop对象,如 所需。
是不是说每个线程都有runloop?或者是不是由NSThread创建的线程,如POSIX的并行线程
它说:“每个NSThread
对象,包括应用程序的主线程,需要有它自动创建一个NSRunLoop
对象。”
如果你不这样做做任何试图访问线程运行循环的东西,系统都不会为该线程创建一个运行循环。
如果你没有做[[NSRunLoop currentRunLoop] run]
(或其他类似的东西),你的线程将不会运行它的运行循环。
UIApplicationMain
函数负责为主线程。对于你创建的线程,如果你希望线程的运行循环有任何效果,你需要运行线程的运行循环。
下面是核心动画的情况下发生了什么(我认为),当你不使用显式事务。它开始一个事务,并在当前线程的运行循环中注册一个回调来提交它。 (如果有必要,这将为当前线程创建一个运行循环。)如果您没有运行线程的运行循环,则该回调将永远不会被调用。
每个* NSThread *有一个运行循环,但你也可以在C中创建线程,我想。 – borrrden
如果您使用pthreads,您可能会查看相关问题的这个答案:http://stackoverflow.com/questions/4930957/nsstream-and-sockets-nsstreamdelegate-methods-not-being-called – Brandon