私は私が遊んでいる小さな基礎ツールテスト(Objective-C)を持っています、そして私はいくつかの質問があります...
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int planetLoop;
NSString *tempString;
NSMutableArray *planetArray = [[NSMutableArray alloc] init];
NSLog(@"STRING ARRAY ... Start");
for(planetLoop=0; planetLoop<10; planetLoop++) {
tempString = [NSString stringWithFormat: @"Planet_%03d", planetLoop+1];
NSLog(@"Planet_%03d", planetLoop+1);
[planetArray addObject:tempString];
}
[planetArray release];
[pool drain];
return 0;
}
まず、通常、オブジェクトを配列に追加してから解放しますが、「tempString」は文字列リテラルであり、割り当てや解放の必要がないため、現在のオブジェクトは正しいと思いますか?
次に、これを(実行前に)実行すると、コードに問題がある場合、「不明なロードコマンド0x80000022を読み取ることができません」というエラーが発生しますか?グーグルで検索すると、xCode 3.1.2のバグのようですが、誰かアイデアはありますか?
最後に、私が間違っていることは何でも、アイデアは、「Planet_001」から「Planet_010」までの10個の文字列で配列を埋めることです。
編集:ああ、なるほど、それは「=[NSString」ビットのせいです。
// Autoreleased object
tempString = [NSString stringWithFormat: @"Planet_%03d", planetLoop+1];
// String literal
tempString = @"Planet_";
どうもありがとう、大いに感謝-gary-