今天要用又忘了, 寫下來備忘一下。
scope
instance variable 有 scope, method 似乎沒有 scope。畢竟是 dynamic typing, method 加上 scope 也滿奇怪的。
instance variable 的 scope:
- 分為 @public, @protected, @private 和 @package (看不懂 @package, 要用到再研究, 我猜是指 scope 在「函式庫」內)
- @interface 預設 scope 是 @protected
- @implementation 預設 scope 是 @private
property
宣告 @property Klass myObject 後, 可用 @synthesize 讓 compiler 產生基本的 getter 和 setter 實作。
或是自己在 @implementation 內實作
-(void) setMyObject:(Klass*)object { } -(Klass*) myObject { return ...; }
個人不太喜歡 @property 的設計, 要找 property 相關存取程式時, 有點不方便。以 @property myObject 來說, 要先確定是否有用 synthesize, 若有的話, 要同時看 myObject、setMyObject 以及 synthesize 的 instance variable (如 _myObject), 才能確定沒有其它存取到這個屬性的地方。
沒有留言:
張貼留言