4

重複の可能性:
@“…”を使用して生成されたNSStringを解放する必要がありますか?

ObjectiveCでNSStringobjを作成する方法は2つあります。

方法1:

// string1 will be released automatically 

NSString* string1 = [NSString string]; 

// must release this when done 

方法2

NSString* string2 = [[NSString alloc] init]; 

[string2 release];

私が行った場合

NSString *string = @"This is a string";

私の質問は、上記の宣言がどちらの方向に当てはまるのか、そして結局それをリリースすべきかということです

4

4 に答える 4

8

文字列定数は解放されません。明示的にリリースされることも、自動リリースされることもありません。それらは単なる定数であり、割り当てが解除されることはありません。

したがって、以前に保持していた場合にのみ、それらを解放してください。

于 2012-05-07T13:23:59.580 に答える
2

最初と最後の文字列では、文字列を所有(割り当ておよび初期化)していないため、解放しないでください。2つ目では、手動で割り当てたため、解放する必要があります。コードでオブジェクトを使用している場合は、2番目のオブジェクトを使用する必要があります。それ以外の場合は、最初または最後のオブジェクトを使用します。

于 2012-05-07T13:27:55.807 に答える
2

ARCを使用している場合はstring = nil; 、リリースする必要はありませんが、リリースする必要はありません。

于 2012-05-07T13:28:44.393 に答える
1

あなたがallocそれなら、あなたはそれをすべきreleaseです。

static次のようなメソッドで作成された文字列

[NSString stringWithXXXX];

それはauto released

@H2CO3は定数について正しいです。

于 2012-05-07T13:29:36.843 に答える