我使用AFNetworking
为我的应用程序中的所有连接。我创建了一个单独的“客户”类,负责所有AFNetworking
代码并使用AFHTTPRequestOperationManager
。我很困惑的是,AFHTTPRequestOperationManager
对象应该是一个属性,还是我应该每次重新创建一个我的客户端被要求连接?如果它是一个属性,我的客户可以被异步调用多次,否则会导致问题,因为可能同时使用同一个实例AFHTTPRequestOperationManager
?AFHTTPRequestOperationManager属性还是不在共享客户端?
回答
通常,您的单身'客户'类将是AFHTTPRequestOperationManager
的子类。它也可能是一个属性,但是你将无法覆盖方法。一些常用重载方法有:
- HTTPRequestOperationWithRequest:success:failure:
,修改所有请求操作是如何构造(例如,如果你需要在每一个请求相同的报头)– initWithBaseURL:
,申请额外定制的运营经理
也就是说,一个属性可以正常工作,这取决于您的需求。 (对于一些令人愉快的周末阅读见Prefer composition over inheritance?。)
最后:
如果它是一个属性,可以在我的客户端异步调用了很多次,还是将这一事业的问题,因为
AFHTTPRequestOperationManager
相同的实例将可能在同一时间使用?
是的,AFHTTPRequestOperationManager
被设计为线程安全的。你可以告诉它做不同线程的东西。 (请注意,它的完成块总是在主线程中调用,因为UI工作通常是在那里完成的。)
我选择不要继承'AFHTTPRequestOperationManager',因为最终我想在我的应用程序丢弃iOS6支持时切换到'AFURLSessionManager'。有一个中立的客户似乎更适合平稳过渡(但我可能会误会)。我会接受你的问题来回答有关'AFHTTPRequestOperationManager'是线程安全的问题。 – Koen
@Koen是的,这是使用属性的一个很好的理由。但是,为了争论,您可以使用子类化并对类集群执行相同的操作。 (你的类可以根据当前的iOS版本返回不同的子类实例。) –
- 1. EJBObject在客户端共享?
- 2. AngularJS远程客户端属性共享到控制器/服务
- 3. 检查属性是客户属性还是客户地址属性
- 4. Java的热点(TM)客户端共享VS不共享
- 5. PDF在Android客户端上共享
- 6. “References”属性在客户端不可见
- 7. Flex共享对象显示客户端
- 8. java服务器客户端共享主
- 9. 验证使用HTTP共享客户端
- 10. 网络共享/ SMB客户端
- 11. 共享属性
- 12. 属性共享
- 13. 来自Silverlight客户端中的实体的助手属性,共享代码
- 14. CAS:CAS客户端不显示属性
- 15. 在客户端不同的javascript文件内共享变量
- 16. 不在客户端上打印的共享表
- 17. 在客户端和Java后端之间共享UTC时间
- 18. MVVM共享属性
- 19. WPF共享属性
- 20. 共享属性在Javascript
- 21. 真棒:在客户端属性→按钮
- 22. Axis客户端jar是6.1共享应用程序
- 23. 什么是共享的Node.js和客户
- 24. Django:vps还是共享主机?
- 25. 客户端按ria服务中的客户端属性排序
- 26. 本机客户端还是什么?
- 27. node.js - 共享客户端使用socket.io管理不同的模块?
- 28. 客户端服务器通过共享公共IP地址?
- 29. 客户端和服务器端之间的共享代码
- 30. 应该在客户端还是在服务器端处理OCR?
@DavidCaunt我还没有尝试过一个属性,但我尝试将管理器存储到一个实例变量,访问崩溃不好。出于某种原因,我分配给我的变量的实例死亡。所以我认为在使用(局部变量)时初始化一个新的管理器会更好(这是我所做的修复)。顺便说一下,我使用ARC,因此实例变量应该有一个强指针,以指向默认分配的对象,就像强属性的工作方式一样。 – cessmestreet