在发送此消息时是否有某种方式指定我在所有挂起的UI事件之后执行我的选择器,如果有的话?IE浏览器.在事件队列中为我的aterDelay计时器赋予较低的优先级.
实际上,performSelector:withObject:afterDelay:
不一定要在主线程上发生; 这就是为什么有一个单独的方法performSelectorOnMainThread:withObject:waitUntilDone:
.文件performSelector:withObject:afterDelay:
说
在延迟之后使用默认模式在当前线程上调用接收器的方法.
如果要在后台执行任务,可以查看+[NSThread detachNewThreadSelector:toTarget:withObject:]
,这将启动一个新线程来执行任务,并使UI保持响应.使用单独的线程执行长时间运行的任务可能会锁定您的UI通常是一个好主意,但它确实增加了复杂性.如果你不熟悉线程,你最终可能会遇到没有任何意义的错误.
在上面的评论中,您提到您认为动画可能会使您的UI无响应.如果您正在使用内置的动画支持(Core Animation或其中一个Cocoa包装器),动画不应该使您的UI无响应.无响应的UI通常意味着您的程序在运行循环返回服务UI事件之前在主线程上执行了大量工作.