Objective-Cのコードでインスタンス変数とプロパティについてちょっと混乱したので、忘備録のためにまとめてみました。
インスタンス変数について
インスタンスごとに異なった値を保持する変数で、クラス自身の外からアクセスされることはないもの。「.m」の@implementationに書かれる。 インスタンス変数にアクセス指定子(private, protected, public, package)を付けて宣言することで、インスタンス自身ではないオブジェクトからもアクセスできるようになる。
- private........宣言したクラス内でのみアクセス可能
- protected…..宣言したクラス及び、そのサブクラスからアクセス可能
- package….同じフレームワークでのみアクセス可能
- public.........どこからでもアクセス可能
ヘッダ部のソース。
@interface BaseClass: NSObject { NSString *baseString; }
実装部のソース。
- (void)someMethod { NSString *myString = @“Test”; //ローカル変数 baseString = myString; //ローカル変数にインスタンス変数を設定 }
プロパティについて
実装部での宣言が可能になった。
@interface MyClass() @property NSString value; @end
プロパティへのアクセスはクラス内からでも常にアクセサメソッドを通して行う。
- (void)someMethod { NSString *myString = @"Test"; self.value = myString; }
とりあえず、まとめてみたものの、まだよく分かっていない。。。どのようなときに、プロパティとインスタンス変数を使い分けるかがイマイチだったりする。もう一度、調べてみるかなー。
参照
「Objective-Cによるプロ グラミング」(47-48ページ) https://developer.apple.com/jp/devcenter/ios/library/documentation/ProgrammingWithObjectiveC.pdf
詳細! Objective-C iPhoneアプリ開発 入門ノート Xcode5+iOS7対応
- 作者: 大重美幸
- 出版社/メーカー: ソーテック社
- 発売日: 2013/11/02
- メディア: 単行本
- この商品を含むブログを見る