NSStringオブジェクトはallocおよびinitである必要がありますか?
-
10-07-2019 - |
質問
Noobの質問:
現在、オブジェクトを作成するには、そのオブジェクトを alloc
および init
する必要があるという印象を受けています。
ただし、 NSString
オブジェクトが宣言されているサンプルコードを見たことがありますが、その後に alloc
または init
メッセージが表示されません...
非常に簡単な例:
NSString *myString = @"Hello World"; NSLog(@"%@" , myString);
なぜそうなのか、誰か説明できますか?
解決
変数の宣言では、メモリを解放する必要はありません。
インスタンス化オブジェクトはそうします。そして、 alloc または copy
を呼び出した場合にのみ、新しいオブジェクトをインスタンス化しますこの例では、コンパイラがハードコードされた文字列から作成する既存のオブジェクトへの参照を設定しています。また、インスタンス化していないため、メモリを管理する必要はありません。
十分に明確に説明しているかどうかわかりません。
編集:
これに答える質問がすでにあるようです:
他のヒント
@" hello、world '
などの NSString
リテラルをコードに埋め込むと、コンパイラーは実行可能ファイルにスペースを割り当て、ロードしますプログラムの開始時にメモリに初期化されます。
実行可能ファイルの一部であるため、アプリの寿命全体にわたって有効です。保持または解放する必要はありません。作成する NSString * myString
変数は、コンパイラが NSString
リテラルを配置するメモリ内の場所へのポインタです。
所属していません StackOverflow