最近一個項(xiàng)目中需要使用到類似 C#、java 那樣的類的字段、類的成員變量。
形式如下:
Person.name = "HaHa";
string? aName = Person.name;
首先列一下此文我們要說的綱目,然后逐個解釋:
1. 類的字段/屬性 簡單定義
2. 結(jié)合類方法與對象方法,解釋 類的字段/屬性 使用(調(diào)用)形式【會對比 實(shí)例方法(對象方法/減號方法)和 實(shí)例變量解釋】
接下來進(jìn)入正文,一一解釋。
一、類的字段/屬性 簡單定義
類的成員屬性是定義在類的內(nèi)部、方法外部。如下 Person 類的 .m 文件:
staticNSString *addr;就是類的成員變量。


要想實(shí)現(xiàn)想C#那樣的調(diào)用方式,只需要仿照對象的成員變量的寫法,在 .h 中定義一個類方法setter方法和一個類方法getter方法,然后在 .m 中實(shí)現(xiàn)即可。如上圖實(shí)現(xiàn)方式。
對比 減號的對象方法,這種? 加號的類方法的 "定義形式" 是不是與之非常類似!
二、外部調(diào)用方式 - 類似 C# 的調(diào)用方式,直接 “類名.屬性名” 即可。如下圖:

??????? 這樣的? "調(diào)用形式"? 是不是與 減號對象方法的getter、setter 極其類似!
只是,對于 C# 或 java 中的static變量,在類內(nèi)部定義時不需要同時寫 +getter? 、 +setter? 方法;在外部調(diào)用時只需要類名點(diǎn)變量名?? Person.name = ””;
而 oc 中除了定義static的變量之外,還需要手動寫? +getter、+setter 并實(shí)現(xiàn),才能在外部使用時 Person.name = @”HaHa”;
個人覺得,這是因?yàn)椋珻# 有命名空間的概念,java 有包的概念,都能通過命名空間的路徑找到唯一的目標(biāo)。(Swift中也增加了命名空間或者名稱空間 nameSpace 的概念)
OK,關(guān)于 oc 中仿照 C# 靜態(tài)變量的定義和使用就介紹完畢,希望能幫到大家!