4
我正在执行一些NSOperation
对象由NSOperationQueue
管理的对象。该代码还包含使用performSelector:withObject:afterDelay:
的延迟方法调用。performSelector:withObject:afterDelay:在NSOperation内
的问题是,对应的选择器应被称为延迟,是不叫在所有。
读到this answer to a StackOverflow question后,我猜这是因为NSOperation
已经完成了,它的线程已经不存在了,“忘记”了对选择器的预定调用。
我该如何解决这个问题? 如何在NSOperation
内对某个方法进行延迟呼叫?
因为我对'NSOperationQueue'和甚至更多'GCD'都很陌生,我可以以某种方式使用'NSOperationQueue',当前的'NSOperation'正在执行,作为调度队列用GCD延迟发送? – fabb 2011-12-30 17:38:00
上面的代码不能与'dispatch_get_global_queue'一起使用,但它可以与'dispatch_get_main_queue'一起使用。任何想法为什么? – fabb 2012-01-03 15:18:55
我对GCD并不是很了解,所以我不完全了解排队到GCD上的保留/释放过程的后果,但我的猜测是,你的原始问题是由面对你的所有对象NSOperation被释放。如果您在NSOperation中搜索与使用异步NSURLConnection相关的问题,您将看到与维护指向对象的指针有关的解决方法,以使NSOperation不受“完成”的限制。 – 2012-09-26 21:38:48