-3
// Directly assigning the value.
NSString *str = [objDictionary objectForKey:@"attributeName"];

// Assigning with convenience method
NSString *str = [NSString stringWithFormat:@"%@", [objDictionary objectForKey:@"attributeName"]];

// Assigning after being owner to that object.
NSString *str = [[NSString alloc] initWithString:@"%@", [objDictionary objectForKey:@"attributeName"]];

どのような場合に、コードで使用する必要があるものを特定する必要があります。??? 同じ間の違いについての参照リンクはありますか???

または、誰かが質問に深く答えることができますか???

助けてくれてありがとう。

4

2 に答える 2

3
NSString *str = [objDictionary objectForKey:@"attributeName"];

これは、autorelease メモリが割り当てられたユーザー ローカル変数を使用する宣言です。つまり、メモリの割り当て/解放について心配する必要はありません。

NSString *str = [NSString stringWithFormat:@"%@", [objDictionary objectForKey:@"attributeName"]];

このメソッドは、異なるタイプを 1 つの文字列に結合する必要がある場合に便利です。

NSString *str = [NSString stringWithFormat:@"%@ and %d", [objDictionary objectForKey:@"attributeName"], 5];

これにより、「あなたの価値と5」が得られます

NSString *str = [[NSString alloc] initWithString:@"%@", [objDictionary objectForKey:@"attributeName"]];

これは、メモリを割り当てる割り当てであり、その変数を他の場所で使用する必要があるため、その変数のメモリを解放するまで、解放しない限りそこに存在します。メモリを割り当てるときは、責任者であるため、自分でメモリを解放するようにしてください。

さらに詳細な調査のために、NSString のドキュメントにアクセスすることをお勧めします。これにより、利用可能なクラス/インスタンス メソッドと使用方法についてのアイデアが得られます。

于 2012-05-03T06:40:27.983 に答える
2

辞書に文字列が含まれていると仮定すると、ARC の下では、これらはすべて同一です。手動参照カウントでは、最初の 2 つは自動解放され、最後の 1 つは保持されます。

リファレンス ガイドについては、 NSString クラス リファレンスより優れたものはありません。

于 2012-05-03T06:23:43.230 に答える