質問

Noobの質問:

現在、オブジェクトを作成するには、そのオブジェクトを alloc および init する必要があるという印象を受けています。

ただし、 NSString オブジェクトが宣言されているサンプルコードを見たことがありますが、その後に alloc または init メッセージが表示されません...

非常に簡単な例:

NSString *myString = @"Hello World";

NSLog(@"%@" , myString);

なぜそうなのか、誰か説明できますか?

役に立ちましたか?

解決

変数の宣言では、メモリを解放する必要はありません。

インスタンス化オブジェクトはそうします。そして、 alloc または copy

を呼び出した場合にのみ、新しいオブジェクトをインスタンス化します

この例では、コンパイラがハードコードされた文字列から作成する既存のオブジェクトへの参照を設定しています。また、インスタンス化していないため、メモリを管理する必要はありません。

十分に明確に説明しているかどうかわかりません。

編集:

これに答える質問がすでにあるようです:

リテラルNSStringは自動リリースされますか、それともリリースする必要がありますか?

他のヒント

@" hello、world 'などの NSString リテラルをコードに埋め込むと、コンパイラーは実行可能ファイルにスペースを割り当て、ロードしますプログラムの開始時にメモリに初期化されます。

実行可能ファイルの一部であるため、アプリの寿命全体にわたって有効です。保持または解放する必要はありません。作成する NSString * myString 変数は、コンパイラが NSString リテラルを配置するメモリ内の場所へのポインタです。

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