質問

プレイしている基礎ツールテスト(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のバグのように見えますが、誰でもアイデアがありますか?

最後に私が間違っていることは何でも、アイデアは配列に10文字列「Planet_001」を入れることです。から&quot; Planet_010&quot;

まで

編集:ああ、それは&quot; = [NSString&quot;ビット

// Autoreleased object
tempString = [NSString stringWithFormat: @"Planet_%03d", planetLoop+1];
// String literal
tempString = @"Planet_"; 

多くの感謝、感謝-gary-

役に立ちましたか?

解決

tempString は実際には文字列リテラルではありません。 @&quot; Planet_%03d&quot; は文字列リテラルです。 tempString は自動解放されたオブジェクトです。つまり、NSAutoreleasePoolが空になると解放されます。基本的に、メモリはすでに管理されており、何もする必要はありません。

ルールは次のとおりです。 new alloc オブジェクトをコピー または 保持 した後、 リリース する必要があります。それ以外の場合、おそらく自動解放によってメモリが既に管理されています。

また、 pool のリリースを忘れました。それ以外は問題ありません。

他のヒント

「不明なロードコマンド0x80000022を読み取れません」の理由として考えられるのは、エラーは、開発者ツールを同時にアップグレードせずにSnow Leopardにアップグレードしたということのようです。 Xcodeの10.5バージョンを使用して10.6環境でコンパイルしようとすると、エラーが発生したようです。明日これを調べます。

Xcode 3.2はSnow Leopard(Mac OS X 10.6)リリースで利用可能になりました。 Snow Leopardをインストールした後、Xcode Toolsディスクイメージとは別にインストールしてXcode 3.2にアップグレードします。 Xcodeの以前のバージョンの上にインストールするか、インストールする前にそれらを移動します。

PS:「不明なロードコマンド0x80000022を読み取れません」というメッセージが表示されたときxCode 3.1.2でOSX 10.6.1を実行していたエラー

歓声-gary-

&quot;ロードコマンド&quot;エラーは、実行可能形式がiPhone OS 3.0からiPhone OS 3.1に変更されたという事実によるものです。

http://networkpx.blogspot.com/2009/09 /about-lcdyldinfoonly-command.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top