任何人都可以向我介绍NSOperationQueue
和NSAutoReleasePool
答案 0 :(得分:6)
NSOperationQueue 类调节一组NSOperation对象的执行。添加到队列后,操作将保留在该队列中,直到明确取消或完成其任务为止。队列内的操作(但尚未执行)本身根据优先级和操作间对象依赖性进行组织,并相应地执行。应用程序可以创建多个操作队列并向其中任何一个提交操作。
操作间依赖关系为操作提供绝对执行顺序,即使这些操作位于不同的操作队列中也是如此。在所有相关操作完成执行之前,操作对象不被视为准备执行。对于准备执行的操作,操作队列始终执行相对于其他就绪操作具有最高优先级的操作。
<强> NSAutoreleasePool 强> 在引用计数环境中(与使用垃圾收集的环境相反),NSAutoreleasePool对象包含已收到自动释放消息的对象,并且在排空时,它会向每个对象发送释放消息。因此,发送自动释放而不是释放到对象会延长该对象的生命周期,至少直到池本身耗尽(如果随后保留该对象,则可能更长)。一个对象可以多次放入同一个池中,在这种情况下,每次将它放入池中时都会收到一条释放消息。
使用通常的alloc和init消息创建一个NSAutoreleasePool对象,并使用drain(或release)处理它以了解其中的差异,请参阅“Garbage Collection”)。由于您无法保留自动释放池(或自动释放它 - 请参阅保留和自动释放),因此耗尽池最终会释放它。您应该始终在创建它的相同上下文(调用方法或函数或循环体)中排出自动释放池。有关详细信息,请参阅自动释放池。
更多访问以下指南...
希望,这会对你有帮助..
答案 1 :(得分:2)
您可以在Apple开发文档中轻松找到它:
NSAutoreleasePool
类用于支持Cocoa 引用计数的内存管理系统。自动释放池存储 池本身发送时发送消息的对象 倒掉。
NSOperationQueue
类规定了一组的执行NSOperation
个对象。添加到队列后,进行操作 保留在该队列中,直到明确取消或完成 执行任务。队列中的操作(但还没有 执行)是根据优先级和自己组织的 操作间对象依赖性并相应地执行。一个 应用程序可以创建多个操作队列并提交操作 他们中的任何一个。