0
仍然让GCD进入我的脑海,并遇到了一个问题,我希望单个串行队列能够跨越我的视图控制器的生命周期。我想在课堂不同部分的单个队列上执行几个块。全局串行调度队列
两个主要的原因是我想避免锁定,因为我已经被告知@synchronise不再是最佳实践,并且有多个获取请求到我需要同步的互联网。
我的解决方案是创建一个串行队列,但它的作用域只在我定义它的方法中。我不想使用全局队列作为它的并发队列,我特别想要一个串行队列。
@interface MyViewController : UIViewController
{
dispatch_queue_t mySerialQueue;
}
@implementation MyViewController
- (void)viewWillAppear:(BOOL)animated
{
if (!mySerialQueue)
mySerialQueue = dispatch_queue_create("com.myAppQueue", NULL);
}
- (void)myMethod
{
dispatch_async(mySerialQueue, ^{
//My block code here
});
}
- (void)myOtherMethod
{
dispatch_async(mySerialQueue, ^{
//My other block code here
});
}
- (void) viewWillDisappear:(BOOL)animated
{
free(mySerialQueue);
}
此外,当我配置文件测试程序,我没有得到任何内存泄漏,但如果我删除“免费(mySerialQueue)我得到一个内存泄露 – timv
什么是你的问题? – 2011-11-21 03:58:52
很高兴听到你解决它。 – NJones