標籤:
在Objective-C中,定義一個類,需要有兩部分: 第一是介面(interface),第二是實現(implementation)。 介面對應介面檔案,而實現對應了實現檔案。 介面檔案包含了類的聲明,成員變數(member variable)和方法(method)。 介面檔案通常是.h
實現檔案通常是.m檔案。 介面中所聲明的方法(method),需要在.m 檔案中,通過xcode 來實現這個方法(method)。
今天查看apple 的官方文檔時(如下)。https://developer.apple.com/library/mac/referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/index.html
發現了一個新的名詞: 成員變數(member variable)。 之所以感到新奇,因為之前 都管它叫 執行個體變數(instance variable)。 記得,初次接觸Objective-C時,看到執行個體變數這一名詞,覺得很新奇。 也試圖把 執行個體變數 與 成員變數,做了一番對比,研究其不同之處。 從以下這個張圖, 可以斷定,我之前所看到的執行個體變數,本質上說,就是成員變數。 對於iOS 初學者來說, 一個新奇的名詞,很容易讓人產生太多的想法。
如果你之前接觸過C++, 對成員變數(member varialbe) ,肯定不陌生。 今天,你又看到了這個熟悉的叫法, 定會感到 Objective-C 沒想象中的那麼難。
行文至此,耳邊又響起了那個廣告語 : 還是原來的配方,還是熟悉的味道。 呵:)
圖中的 ”Member Variable declarations“ ,字面的意思: ”成員變數聲明“。 貌似 { } 中所聲明的變數都為成員變數。 既然如此,執行個體變數又是什麼意思呢?既然OC的表達方式是英文, 不妨從英文中查知原本的含義。
類: Class (description/template for an object)
執行個體: Instance (manifestation of a class)
訊息: Message (sent to object to make it act)
方法: Method (code invoked by a 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 應屬於 執行個體變數。
Objective-C 基本文法:執行個體變數與成員變數的區別