我聽說「Class Wrapper」這個術語很多,我很好奇它是什麼。我在這個網站上閱讀關於他們的解釋,他們基本上聽起來像一個Singleton和Objective-C。我的兩個問題是: 1.類包裝器中的單例有什麼區別? 2.是否在iOS項目中使用過類包裝,或者我們更經常在iOS世界中使用單例?類包裝器和Java和Objective-C中的單例之間有什麼區別?
0
A
回答
2
我認爲你對這些實體之一感到困惑,它們絲毫不相似(除了是軟件工程的一部分......)。
單例是一個單一的對象(你喜歡的任何類),可以通過你喜歡的任何代碼從整個項目的任何地方訪問。這是空間中的一個單點,可以從太空中的任何其他點進行參照。
「包裝類」是包裝另一個類(或原始類)的類。假設你想將一個int傳遞給一個函數或方法,該方法修改了這個int並且你希望調用對象看到這個改變。由於int是通過值而不是通過引用傳遞的(默認情況下),因此調用者會忽略對被調用函數中的int進行的任何更改。所以調用者看到int值沒有變化。現在,如果您創建一個Integer
對象並使其包含一個int,則您現在可以通過引用函數或方法來傳遞該對象,修改Integer
對象並將修改後的值返回到調用函數中。 A Wrapper Class
將對象(或基元)包裝到另一個對象中以賦予其不同的功能。
2
單件和類包裝是兩個不同的概念。單例是指只有一個實例的類,因此名稱。假設你想建立一個地址簿並在其中存儲多個聯繫人,那麼在你的應用中只有一個地址簿實例是有意義的,而不是創建多個地址簿,如果你的應用的目的僅僅是跟蹤一個聯繫人單個地址簿。
在Obj-C類包裝器中形成了橋接從C語言繼承的原始數據類型並具有對象表示的概念。你舉了一個float數據類型的例子。在數字的情況下,基礎框架提供了抽象的NSNumber類,用於圍繞原始數據類型(如float或int)進行「包裝」,併爲您提供對象表示。從那裏你可以將它們存儲在一個數組或字典中,或者將它們作爲普通對象來處理(發送消息,擴展等)。泛型類封裝的另一個很好的例子是NSValue類,它允許您創建用於在CG中廣泛使用的CGPoint或CGRect的對象表示。
相關問題
- 1. JAR和包之間有什麼區別?
- 2. yarn.lock和npm的包裝鎖之間有什麼區別?
- 3. WPF中的類監聽器和實例列表器之間有什麼區別?
- 4. 使用Zend Framework,模塊和包裝之間有什麼區別
- 5. 靜態屬性和單例之間有什麼區別?
- 6. Singleton對象和sessionfactory單例對象之間有什麼區別
- 7. java類繼承和javabean繼承之間有什麼區別?
- 8. 包裝,橋樑和介體之間的區別是什麼?
- 9. DLL包裝和DLL之間的區別
- 10. Linux中的insmod模塊和rpm包之間有什麼區別
- 11. 原始類型和包裝類之間的主要區別是什麼?
- 12. 「層」和「層」之間有什麼區別?
- 13. Tableau和QlikView之間有什麼區別
- 14. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之間有什麼區別?
- 15. @Entity和@embeddable之間有什麼區別
- 16. ContentObservable和DataSetObservable之間有什麼區別?
- 17. touchmove和gesturechange之間有什麼區別?
- 18. :notification.flags和notification.defaults之間有什麼區別?
- 19. proc和lambda之間有什麼區別?
- 20. :: after和after之間有什麼區別?
- 21. read()和io.read()之間有什麼區別?
- 22. Request()和Request.Form()之間有什麼區別?
- 23. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之間有什麼區別?
- 24. getA()和this.getA()之間有什麼區別?
- 25. (int)和intval()之間有什麼區別?
- 26. set_value和= pandas之間有什麼區別
- 27. * zoom和zoom之間有什麼區別?
- 28. {0}和「」之間有什麼區別?
- 29. typedef和using之間有什麼區別?
- 30. 「」和「'之間有什麼區別?
您需要認識到「Singleton」和「Class wrapper」是完全不同於語言的概念或設計模式。您可以將這些概念應用於任何面向對象的編程語言。它們都不是特定於Java或Objective-C的。 – rmaddy
@rmaddy我以前不知道。你總是有見地的rmaddy,哈哈,謝謝你。 – John