私はNSStringsと本当に混同しています。いつやればいいのかな
NSString *aString = @"Hello";
それは次のとおりです。
NSString *aString = [[NSString alloc] initWithString:@"Hello"];
しかし、NSString プロパティに値を代入する場合は異なりますね。誰かが私のためにこれを片付けることができますか?
ありがとう!!
私はNSStringsと本当に混同しています。いつやればいいのかな
NSString *aString = @"Hello";
それは次のとおりです。
NSString *aString = [[NSString alloc] initWithString:@"Hello"];
しかし、NSString プロパティに値を代入する場合は異なりますね。誰かが私のためにこれを片付けることができますか?
ありがとう!!
一般的には、最初に実行する必要がありますが、ほとんどの機能は同じです。定数 NSString は、通常の NSString 文字列オブジェクトと同じように扱うことができます。たとえば、次のようになります。
[@"Hello" length]
5 を返します。それらをプロパティに割り当てることができます。すべてが機能します。お気づきかもしれませんが、定数 NSString を使用すると、保持/解放について心配する必要はありません。これは、実際にはアプリケーションの読み取り専用データ セクションにマップされており、メモリが割り当てられていないためです。それらに対する保持と解放の呼び出しは引き続き機能しますが、単にヌープになるだけです。
NSString *aString = @"Hello";
文字列を作成しautoreleased
ます。つまり、明示的にしないretain
と、メソッドが終了した後に消える可能性があります (場合によっては、まったく問題ありません)。しかし、その時を過ぎてもそれを保持したい場合は、それを保持する必要があります.
このようにその文字列のプロパティを作成すると
@property (retain) NSString *aString;
そして、次のように割り当てます。
self.aString = @"Hello";
次に、文字列を適切に保持すると、文字列がくっつきます。
一方、 usingを使用alloc, init
すると、保持カウントが 1 の文字列が作成されます。そのメソッドを通過する必要がない場合は、作成する必要がありますrelease
。
****編集: @"Hello" は、他の人が指摘しているように、自動解放された文字列ではありません。私の悪い。****