[iP]Objective-Cの文法メモ(ActionScript3.0との比較的な):インスタンスの作り方
クラスのインスタンスの生成方法
AS3はこんな感じ
//AS3 //newでコンストラクタを実行。 var hoge:MovieClip= new MovieClip();
obj-cはnewでなくて、各クラスによって色んな初期化メソッドが用意されているみたい。
//Objective-C //NSStringの場合 //直接文字列を入れて初期化 NSString* str = @"HOGEHOGEO"; //NSString専用の初期化用のメソッドを使う //文字列から生成 NSString* str = [NSString stringWithString: @"HOGEHOGEO"]; //既存の数値を利用して生成 NSString* str = [NSString stringWithFormat: @"ほげ:%d",100];
※またどのクラスでも通用する汎用の初期化メソッドもある。
(これがASのnewに近いのかな)
[[クラス名 alloc] init]
allocでメモリを確保して、initメソッドを実行
(initメソッドはNSObjectのメソッド)
あとallocでメモリ領域を確保した場合は使用後は自分で破棄しないとダメ
(iPhoneはGC無いので)
破棄は
[インスタンス名 release];
//Objective-C //allocでインスタンス用のメモリを確保し、initを実行 NSString* str = [[NSString alloc] init]; //※ただしNSStringのインスタンスは文字列の上書きができないので上記でインスタンスを作ると中身が空っぽのインスタンスができるだけとなる。 NSLog(@"%@",str);//出力:(ブランク) //破棄 [str release];
2010/05/21:追記
objective-cでもnewを使ったインスタンスの生成はできる
//newを使った例 NSDate* date = [NSDate new]; //newを使わない(上と同じ意味) NSDate* date = [[NSDate alloc] init];
Tweet