让我说我有这样的事情:
AFJSONRequestOperation *operation = ...
[operation start];
当调用操作开始时,该操作放在哪里?在哪个队列?是否有任何全局(for class)操作队列放置此操作并且我可以访问此操作?
因为我需要调用(在某些情况下)[操作停止](可能不会被调用,但只是从队列中删除操作,并停止它)来自另一种方法,有没有办法做到这一点?
或者我应该使用实例变量AFJSONRequestOperation,然后像这样访问它?虽然我有许多不同的操作,但如果还有其他方法,我会创建许多实例变量。
谢谢。
答案 0 :(得分:1)
我对AFNetworking并不是特别熟悉,但就我所知, AFJSONRequestOperation
在内部使用NSURLConnection
。
如果您只是自己调用start
操作,它将在NSURLConnection
提供的后台线程上执行请求。因此它不会在任何队列中。您应该自己保留对操作的引用以阻止它被释放,并使用某种回调或阻止来处理结果,可能由AFJSONRequestOperation
或Key Value Observing
isFinished
提供。 NSOperation
的属性。
或者,因为AFJSONRequestOperation
是NSOperation
,您可以将其添加到您创建的NSOperationQueue
或者其他框架功能提供的NSOperationQueue
。在这种情况下,start
将为您调用{{1}}方法,并在处理对象时管理对象。同样,您必须确定在操作完成时处理结果的最佳方法。