AFJSONRequestOperation操作启动堆栈

时间:2013-05-24 21:26:35

标签: objective-c afnetworking nsoperationqueue operation afjsonrequestoperation

让我说我有这样的事情:

AFJSONRequestOperation *operation = ...

[operation start];

当调用操作开始时,该操作放在哪里?在哪个队列?是否有任何全局(for class)操作队列放置此操作并且我可以访问此操作?

因为我需要调用(在某些情况下)[操作停止](可能不会被调用,但只是从队列中删除操作,并停止它)来自另一种方法,有没有办法做到这一点?

或者我应该使用实例变量AFJSONRequestOperation,然后像这样访问它?虽然我有许多不同的操作,但如果还有其他方法,我会创建许多实例变量。

谢谢。

1 个答案:

答案 0 :(得分:1)

我对AFNetworking并不是特别熟悉,但就我所知, AFJSONRequestOperation在内部使用NSURLConnection

如果您只是自己调用start操作,它将在NSURLConnection提供的后台线程上执行请求。因此它不会在任何队列中。您应该自己保留对操作的引用以阻止它被释放,并使用某种回调或阻止来处理结果,可能由AFJSONRequestOperationKey Value Observing isFinished提供。 NSOperation的属性。

或者,因为AFJSONRequestOperationNSOperation,您可以将其添加到您创建的NSOperationQueue或者其他框架功能提供的NSOperationQueue。在这种情况下,start将为您调用{{1}}方法,并在处理对象时管理对象。同样,您必须确定在操作完成时处理结果的最佳方法。