簡體   English   中英

類包裝器和Java,以及Objective-C中的單例之間有什么區別?

[英]What is the difference between a class wrapper and Java, and a singleton in Objective-C?

我聽到“ Class Wrapper”一詞泛濫,我很好奇它是什么。 我在本網站上閱讀了有關它們的解釋,基本上它們聽起來像是Singleton和Objective-C。 我的兩個問題是:1.類包裝中的單例之間有什么區別? 2.類包裝器是否曾在iOS項目中使用過,還是我們在iOS世界中更頻繁地使用單例?

我認為您對這些實體中的一個感到困惑,它們絲毫不相似(除了作為軟件工程的一部分...)。

單例是單個對象(您喜歡的任何類),可以通過您喜歡的任何代碼從整個項目中的任何位置訪問它。 它是空間中的單個點,可以從空間中的任何其他點參考。

“包裝器類”是包裝另一個類(或基元)的類。 假設您要將int傳遞給函數或方法,則該方法會修改該int,並且您希望調用對象看到更改。 由於int是通過值而不是通過引用傳遞的(默認情況下),因此調用者將忽略在調用函數中對該int所做的任何更改。 因此,調用方看不到int的值有任何變化。 現在,如果您制作一個Integer對象並使其包裝一個int,則現在可以通過引用函數或方法來傳遞該Integer對象,修改Integer對象並將修改后的值返回給調用函數。 Wrapper Class將一個對象(或原語)包裝到另一個對象中以賦予其不同的功能。

單例和類包裝器是兩個不同的概念。 單例是指一個類,其唯一的作用是擁有一個實例,因此得名。 假設您要建立一個通訊錄並在其中存儲多個聯系人,那么如果應用程序的目的只是為了跟蹤一個聯系人中的聯系人,那么在您的應用程序中只有一個通訊錄實例而不是創建多個通訊錄是有意義的單個地址簿。

在Obj-C類包裝器中,形成了橋接從C語言繼承的原始數據類型並為其提供對象表示的概念。 您給出了一個float數據類型的示例。 對於數字,基礎框架提供了抽象的NSNumber類,以“包裝”原始數據類型(例如float或int),並為您提供對象表示形式。 從那里,您可以將它們存儲在數組或字典中,或將它們作為普通對象處理(發送消息,擴展等)。 通用類包裝器的另一個很好的例子是NSValue類,它允許您為CGPoint或CGRect創建對象表示,它們在iOS中得到了廣泛使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM