インスタンス生成

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]