@propertyのお話(2) | 初心者がiPhoneアプリを作るブログ

初心者がiPhoneアプリを作るブログ

初心者がiPhoneアプリを作るブログです.
入門レベルですので開発初心者にも,できるだけ分かるように丁寧に説明していきます(多分).

それでは実際にコードを書いてporpertyについて理解を深めましょう.
言っときますけど,プロパティはホントに頻出です!!!

まず,新しいクラスを定義しましょう.
そのために,プロジェクトに新しくファイルを追加します.

XCodeのファイルメニューの中から,
File → New → New File
と進んでいきましょう.
そのあと,
Objective-C class
を選択し,nextを押します.
Class名は
MyFirstClass
にします.クラス名は特に指定はないので,好きな名前でも結構です.
さらに,Subclass ofのプルダウンメニューで
NSObject
を選択してcreateを押してファイルを追加しましょう.

そうすると,「MyFirstClass.h」「MyFirstClass.m」ファイルが追加されたと思います.

それでは,MyFirstClass.hの中身をみてみましょう.

非常にすっきりしてますね笑
これを

@interface MyFirstClass : NSObject {
  int myInt;
  NSString *myString;
}

@property(nonatomic, strong, readwrite) NSString *myString;
@property(unsafe_unretained, readwrite) int myInt;

@end


このように書き加えて下さい.
それでは解説していきます.

@interface~@endで書いたものが,
このクラスの定義部分(宣言部分)になります.
また,{~}に書いた部分に変数を宣言します.

さらに,宣言した変数をプロパティとして扱いたい場合は
@property(nonatomic, strongreadwriteNSString *myString;
@property(unsafe_unretainedreadwriteint myInt;
このように書いてください.

@propertyの後に,オーナーシップ,読み書き属性の設定を行い,どの変数をプロパティにするかを宣言します.
オーナーシップ等の詳しい話は割愛させて頂きますが(私自身完全に理解できていない...)
「NS~」「UI~」ではじまる型の変数をプロパティにしたい場合は
(nonatomic, strong, readwrite)
を指定しておけばとりあえずは大丈夫です.

さて,このままだとwarningがでていると思いますので,更に続けます.
今度はMyFirstClass.mの方を見て下さい.
@implementation MyFirstClass
@synthesize myString, myInt;

@end

先程,~.hファイルの@interface~@end部分が宣言部分であると説明しました.
それに対し,~.mファイルの@implementation~@end部分は宣言したものに対して実装部分といえます.

さて,追加した1行を見てみますと,先程プロパティとして宣言した変数名が
@synthesizeの後に書かれています.
これは,この2つの変数を「プロパティとして使いますよ~」
と宣言している,程度に思っておいて下さい.

以上で,クラスの定義,更にプロパティの実装までが完了しました.

それでは,実際にこのプロパティを使ってみましょう.

次の記事へ

HOMEに戻る