假设我有这样的东西:
AFJSONRequestOperation *operation = ...
[operation start];当调用操作start时,该操作放在哪里?在哪个队列中?是否有全局(类)操作队列放置此操作,我可以访问此操作?
因为我需要(在某些情况下)从另一个方法调用operation stop,有没有办法做到这一点?
或者我应该使用实例变量AFJSONRequestOperation,然后像这样访问它?虽然我有许多不同的操作,这会让我创建许多实例变量,所以如果有其他方法的话。
谢谢。
发布于 2013-05-26 18:07:12
我对AFNetworking不是特别熟悉,但据我所知,AFJSONRequestOperation在内部使用NSURLConnection。
如果您自己简单地在操作上调用start,它将在NSURLConnection提供的后台线程上执行请求。因此,它不会在任何队列中。您应该自己保留对操作的引用,以阻止它被释放,并使用某种回调或块来处理结果,可能是由AFJSONRequestOperation提供的,或者通过Key Value Observing NSOperation的isFinished属性来处理。
或者,因为AFJSONRequestOperation是一个NSOperation,所以您可以将其添加到您创建的NSOperationQueue中,也可以添加到其他框架特性提供的add中。在这种情况下,NSOperationQueue将为您调用start方法,并在处理对象时管理对象的生存期。同样,您必须确定在操作完成时处理结果的最佳方式。
https://stackoverflow.com/questions/16743874
复制相似问题