インスタンス生成
objective-cでは、コンストラクタ生成に、以下のように複数の方法で実装可能
違いは、メモリー管理が違うようですが、今はまだ?なのでべんきょうを進めていく上で随時追記する
int main (int argc, const char * argv[]) { @autoreleasepool { // NSString NSString *s = @"test"; NSLog(@"s=%@", s); // allocでインスタンス生成、initで初期化、この時点では値は「nil」 NSString *s1 = [[NSString alloc] init]; NSLog(@"s1 init =%@", s1); s1 = @"test11"; s1 = @"test12"; NSLog(@"s1=%@", s1); // コンビニエンスコンストラクタ、基本はクラス名から「NS」を除いたメソッド名 NSString *s2 = [NSString string]; s2 = @"test22"; NSLog(@"s2=%@", s2); // イニシャライザーで NSString *s3 = [[NSString alloc] initWithFormat:@"format[%@]", @"test31"]; NSLog(@"s3=%@", s3); } return 0; }
実行結果は
2012-02-05 08:01:34.076 Helloworld2[492:707] s=test 2012-02-05 08:01:34.089 Helloworld2[492:707] s1 init = 2012-02-05 08:01:34.089 Helloworld2[492:707] s1=test12 2012-02-05 08:01:34.090 Helloworld2[492:707] s2=test22 2012-02-05 08:01:34.091 Helloworld2[492:707] s3=format[test31]