我使用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