我每秒重复调用一个方法(名为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线程的性能限制,有人知道吗?非常感谢〜
答案 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函数释放它。