0

私はNSStringsと本当に混同しています。いつやればいいのかな

NSString *aString = @"Hello";

それは次のとおりです。

NSString *aString = [[NSString alloc] initWithString:@"Hello"];

しかし、NSString プロパティに値を代入する場合は異なりますね。誰かが私のためにこれを片付けることができますか?

ありがとう!!

4

2 に答える 2

2

一般的には、最初に実行する必要がありますが、ほとんどの機能は同じです。定数 NSString は、通常の NSString 文字列オブジェクトと同じように扱うことができます。たとえば、次のようになります。

[@"Hello" length]

5 を返します。それらをプロパティに割り当てることができます。すべてが機能します。お気づきかもしれませんが、定数 NSString を使用すると、保持/解放について心配する必要はありません。これは、実際にはアプリケーションの読み取り専用データ セクションにマップされており、メモリが割り当てられていないためです。それらに対する保持と解放の呼び出しは引き続き機能しますが、単にヌープになるだけです。

于 2009-07-31T02:09:30.977 に答える
0
NSString *aString = @"Hello";

文字列を作成しautoreleasedます。つまり、明示的にしないretainと、メソッドが終了した後に消える可能性があります (場合によっては、まったく問題ありません)。しかし、その時を過ぎてもそれを保持したい場合は、それを保持する必要があります.

このようにその文字列のプロパティを作成すると

@property (retain) NSString *aString;

そして、次のように割り当てます。

self.aString = @"Hello";

次に、文字列を適切に保持すると、文字列がくっつきます。

一方、 usingを使用alloc, initすると、保持カウントが 1 の文字列が作成されます。そのメソッドを通過する必要がない場合は、作成する必要がありますrelease

****編集: @"Hello" は、他の人が指摘しているように、自動解放された文字列ではありません。私の悪い。****

于 2009-07-31T02:09:24.270 に答える