ツヨシのブログ

技術的な事とか日常の事とか徒然なるままに

インスタンス変数とプロパティについて

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対応

詳細! Objective-C iPhoneアプリ開発 入門ノート Xcode5+iOS7対応