iOS GCD性能如何?

时间:2016-08-22 09:44:15

标签: ios grand-central-dispatch

我每秒重复调用一个方法(名为A)大约3000次,在A方法中,我分配一些资源并做一些事情。

如果我直接在A方法中分配和执行某些操作,它可以正常工作。但是,如果我在GCD创建的自定义串行线程中分配并执行某些操作,那么它就会崩溃

NSString *queueName = [NSString stringWithFormat:@"com.realank.thread"];
dispatch_queue_t serialQueue = dispatch_queue_create([queueName cStringUsingEncoding:NSUTF8StringEncoding], NULL);
dispatch_async(initMidMenu, ^{

// alloc and do something

});

所以我认为它崩溃的原因是因为关于GCD线程的性能限制,有人知道吗?非常感谢〜

1 个答案:

答案 0 :(得分:1)

当您致电dispatch_queue_create时,您正在分配新的调度队列。您必须使用Apple提到的dispatch_release将其释放。否则你会耗尽内存!!!

https://developer.apple.com/reference/dispatch/1453030-dispatch_queue_create#return-value

您可以通过dispatch_queue_create方法的返回值获取对新创建的队列的引用,然后将其释放。

以下是Apple在其文档中提到的内容。

  

当您的应用程序不再需要调度队列时,它应该   使用dispatch_release函数释放它。