例項變數與成員變數的區別 Objective C

2021-06-26 14:49:56 字數 1662 閱讀 3889

在objective-c中,定義乙個類,需要有兩部分: 第一是介面(inte***ce),第二是實現(implementation)。 介面對應介面檔案,而實現對應了實現檔案。 介面檔案包含了類的宣告,成員變數(member variable)和方法(method)。 介面檔案通常是.h
實現檔案通常是.m檔案。  介面中所宣告的方法(method),需要在.m 檔案中,通過x

code 來實現這個方法(method)。

發現了乙個新的名詞: 成員變數(member variable)。 之所以感到新奇,因為之前 都管它叫 例項變數(instance variable)。 記得,初次接觸objective-c時,看到例項變數這一名詞,覺得很新奇。 也試圖把 例項變數 與 成員變數,做了一番對比,研究其不同之處。 從以下這個張圖, 可以斷定,我之前所看到的例項變數,本質上說,就是成員變數。 對於ios 初學者來說, 乙個新奇的名詞,很容易讓人產生太多的想法。

如果你之前接觸過c++, 對成員變數(member varialbe) ,肯定不陌生。  今天,你又看到了這個熟悉的叫法, 定會感到 objective-c  沒想象中的那麼難。

行文至此,耳邊又響起了那個廣告語 : 還是原來的配方,還是熟悉的味道。 呵:)

圖中的 」member variable declarations「 ,字面的意思: 」成員變數宣告「。  貌似  中所宣告的變數都為成員變數。 既然如此,例項變數又是什麼意思呢?

既然oc的表達方式是英文, 不妨從英文中查知原本的含義。

類:

class

(description

/template

foran

object

)例項:

instance

(manifestation of a

class

)訊息:

message

(sent to

object

to make it act

)方法:

method

(code invoked

bya

message

)例項變數:

instance

variable

(object

-specific storage

)超類/子類:

superclass

/subclass

(inheritance

)協議:

protocol

(non

-class

-specific methods

)

從給出的英文說明,可以看出: 例項(instance) 是針對 類(class)而言的。  例項是指類的宣告; 由此推理, 例項變數(instance variable) 是指 由類宣告的物件。
嚴格說來, 上圖中的  int  count;  是乙個成員變數。  而 nsstring * name;  是乙個例項變數。 至於 id data 應該屬於成員變數還是例項變數呢?  因為 id 是 oc特有的型別。從本質上講,id 等同於 (void *)。 

所以 id data 應屬於 例項變數。

成員變數(例項變數,類變數) 區域性變數 的區別

成員變數 包括例項變數和類變數 成員方法 包括例項方法和類方法 例項變數 非static關鍵字修飾的變數 類變數 靜態變數 static關鍵字修飾的變數 例項方法 非static關鍵字修飾的方法 類方法 靜態方法 static關鍵字修飾的方法 區域性變數 方法中定義的變數 靜態方法 類方法 只能訪問...

靜態成員變數與普通成員變數的區別

1.靜態成員變數是屬於整個類的全域性變數,它不單屬於某乙個物件 普通成員變數是屬於類中的物件,它不能被所有物件共享。如 class a int a n 0 void show cout 輸出 1a 2a 3a 4a 5a 該例沒有建立乙個物件,但是去可以通過類名和限定符訪問靜態變數n,並且對其進行自...

OC基礎 例項變數和成員變數的區別

摘要 objective c 引入了 例項變數 的概念,但同時,也經常出現 成員變數 的聲音。到底什麼是例項變數,什麼是成員變數,二者的區別是什麼呢?在objective c中,定義乙個類,需要有兩部分 第一是介面 inte ce 第二是實現 implementation 介面對應介面檔案,而實現對...