AFHTTPRequestOperationManager属性与否共享客户端?

时间:2014-01-25 13:17:44

标签: afnetworking-2

我在我的应用中使用AFNetworking表示我的所有连接。我创建了一个单独的“客户”类,负责处理所有AFNetworking代码并使用AFHTTPRequestOperationManager。我感到困惑的是AFHTTPRequestOperationManager对象应该是一个属性,还是每次我的客户端被要求连接时我应该重新创建一个属性?如果它是一个属性,我的客户端可以多次异步调用,还是会导致问题,因为AFHTTPRequestOperationManager的同一个实例可能会同时使用?

1 个答案:

答案 0 :(得分:4)

通常,您的单身“客户”类将是AFHTTPRequestOperationManager的子类。它也可以是属性,但是你将无法覆盖方法。一些通常被覆盖的方法是:

  • - HTTPRequestOperationWithRequest:success:failure:,修改所有请求操作的构造方式(例如,如果每个请求中都需要相同的标头)
  • – initWithBaseURL:,将其他自定义应用于操作管理器

也就是说,根据您的需要,房产可以正常运作。 (有关愉快的周末阅读,请参阅Prefer composition over inheritance?。)

最后:

  

如果它是一个属性,我的客户端可以多次异步调用,还是会导致问题,因为AFHTTPRequestOperationManager的同一个实例可能会同时使用?

是的,AFHTTPRequestOperationManager旨在确保线程安全。你可以告诉它从不同的线程做东西。 (请注意,它的完成块总是在主线程上调用,因为UI工作通常在那里完成。)