我在我的应用中使用AFNetworking
表示我的所有连接。我创建了一个单独的“客户”类,负责处理所有AFNetworking
代码并使用AFHTTPRequestOperationManager
。我感到困惑的是AFHTTPRequestOperationManager
对象应该是一个属性,还是每次我的客户端被要求连接时我应该重新创建一个属性?如果它是一个属性,我的客户端可以多次异步调用,还是会导致问题,因为AFHTTPRequestOperationManager
的同一个实例可能会同时使用?
答案 0 :(得分:4)
通常,您的单身“客户”类将是AFHTTPRequestOperationManager
的子类。它也可以是属性,但是你将无法覆盖方法。一些通常被覆盖的方法是:
- HTTPRequestOperationWithRequest:success:failure:
,修改所有请求操作的构造方式(例如,如果每个请求中都需要相同的标头)– initWithBaseURL:
,将其他自定义应用于操作管理器也就是说,根据您的需要,房产可以正常运作。 (有关愉快的周末阅读,请参阅Prefer composition over inheritance?。)
最后:
如果它是一个属性,我的客户端可以多次异步调用,还是会导致问题,因为
AFHTTPRequestOperationManager
的同一个实例可能会同时使用?
是的,AFHTTPRequestOperationManager
旨在确保线程安全。你可以告诉它从不同的线程做东西。 (请注意,它的完成块总是在主线程上调用,因为UI工作通常在那里完成。)