實體變數是用來記錄所有的實體的狀況參數等數據用的,如以車子來說,有顏色,速度,油量.......等等參數,寫成實際的 Code 就是實體變數。

下面的範例就是在設定一個車子的 速度,顏色,油量等,就要寫成:
 

@interface Car : NSObject{
    //以下為實體變數

    int speed;
    enum {white,red,blue,black} color;
    int fuelGauge;
}

@end

@implementation Car
    // 方法寫在這兒
@end

實體變數在同一個 Class 內部是可以自由直接存取的,但在不同的 Class 就要看權限的設定了。權限一共有四種 private protected public package

private 的範圍最小,只能在同一個 Class 內存取,protected 則可以在任何繼承這個類別的子類別中存取,而如果設成 public 則可以在所有的 Class 中存取。

權限範圍示意圖如下:


圖片來源:Apple 開發官網

而預設的權限為 protected。如果在宣告實體變數時,要用不同的權限,就要加入相關的修飾詞如@private,@protected 等。另外,實體變數也可以@implementation 後宣告,只是會變成預設為 private 權限。所以上面的程式寫成完整的修飾的話,就會變成:

@interface Car : NSObject{

    @private
        //private權限實體變數於此
    @protected
        //protected權限實體變數於此
    int speed;
    enum {white,red,blue,black} color;
    int fuelGauge;
    @public
        //public權限實體變數於此
    @packged
        //packged權限實體變數於此
}

@end

@implementation Car{
        //private權限實體變數於此
}

    // 方法寫在這兒
@end


實體變數在沒有權限的地方,如有存取需求,就要需要使用特定的【方法】來做存取,術語上我們叫它 setter 與 getter 方法,接下來的小節,就會討論這些項目。


@package 的權限是一特別權限,在 64bit ,
原則是在設計開發工具 framework 才會用到。它是在同一個 framwork 內是 public ,而不在內則把它當做 private,如果還沒有要開發 framwork ,可以暫時用不到它。 

arrow
arrow

    shenfive 發表在 痞客邦 留言(0) 人氣()