在C#和JAVA中無論是method還是variable都有嚴格的訪問級別控制,那麼在object-c中對訪問級別的使用非常稀少,原因可能是因為在method上沒有訪問級別的語法,單單控制變數沒有什麼力度吧。下麵我們來討論下實例變數的訪問級別。實例變數在類中聲明時預設是protected的不像一.....
在C#和JAVA中無論是method還是variable都有嚴格的訪問級別控制,那麼在object-c中對訪問級別的使用非常稀少,原因可能是因為在method上沒有訪問級別的語法,單單控制變數沒有什麼力度吧。下麵我們來討論下實例變數的訪問級別。實例變數在類中聲明時預設是protected的不像一般的C++或C#,java 預設聲明是private的。這一點讓我們在多語言環境上開發的人比較困惑。
下麵介紹下實例變數的訪問級別:
protection level | complier directive | desciption |
privete | @private | 在類內部聲明的方法使用 |
protected | @protected | 在本類和子類內部使用 |
public | @public | 從任意的類和方法中使用 |
package | @package | 在程式包內部任意地方使用, 目前只適用於64位系統 |
顯式保護和隱式保護
因為protected 是預設的訪問級別,同時你可以顯式的聲明。
@interface Player:NSObject{ //this is a protected instance varible that implicit declare int m_playerExperience; } @interface Player:NSObject{ //this is a protected instance varible that explicit declare @prootected int m_playerExperience; }
兩種方式沒有任何區別。但是最佳做法是顯式的寫出訪問級別,即時你知道它預設的訪問級別。