具だくさん

昨日の続き
昨日は寝落ちてしまったのでw

具だくさんなので色々書きますよ


先ず、cocoa用Makefile

LDFLAGS=-framework Foundation -framework AppKit

これだけ! make最高!


hoge.m

#import <Foundation/Foundation.h>

int main(int argc, char* argv[])
{
    id pool = [[NSAutoreleasePool alloc] init];

    NSString *p = nil;

    if(argc < 2 || atoi(argv[1]) == 0) {
        p = @"hoge";
    } else {
        switch(atoi(argv[1])) {
         case 1:
             p = [NSString stringWithString:@"hoge"];
             break;
         case 2:
             p = [NSString stringWithFormat:@"%@", @"hoge"];
             break;
         case 3:
              p = [NSString stringWithContentsOfFile:[NSString stringWithFormat:@"%s", __FILE__]
                                            encoding:NSASCIIStringEncoding
                                               error:NULL];
             break;
         case 4:
             p = [NSString stringWithUTF8String:"hoge"];
             break;
         case 5:
             p = [NSString stringWithCString:"hoge"
                                    encoding:NSASCIIStringEncoding];
             break;
         default:
             fprintf(stderr, "%s\n", "hoge");
             exit(-1);
             break;
        }
    }

    NSString *q = [p copy];
    NSString *r = [NSString stringWithString:p];
    NSString *s = [r copy];

    NSLog(@"%p, %p, %p, %p", p, q, r, s);

    [pool release];
    return 0;
}

元となるNSStringの生成を色々な方法でやってみました。
これで色んなNSStringのサブクラスでどうなるか一撃です。


make

$ make hoge

これだけ! make最高!


一気に実行します。

$ for i in 0 1 2 3 4 5 ;do ./hoge $i;done
2011-02-03 20:58:45.647 hoge[31533:903] 0x100001068, 0x100001068, 0x100001068, 0x100001068
2011-02-03 20:58:45.659 hoge[31535:903] 0x100001068, 0x100001068, 0x100001068, 0x100001068
2011-02-03 20:58:45.676 hoge[31536:903] 0x100111650, 0x100111650, 0x100111650, 0x100111650
2011-02-03 20:58:45.688 hoge[31537:903] 0x100111b80, 0x100111b80, 0x100111b80, 0x100111b80
2011-02-03 20:58:45.700 hoge[31538:903] 0x1001110d0, 0x1001110d0, 0x1001110d0, 0x1001110d0
2011-02-03 20:58:45.713 hoge[31539:903] 0x1001110f0, 0x1001110f0, 0x1001110f0, 0x1001110f0

全部同じ結果!


以上!