1
[NSString stringWithFormat:]
にを渡した後にC文字列を解放することはできますか?例:C文字列を[NSString stringWithFormat:]と一緒に使用した後に解放できますか?
char *str = malloc(...);
// ... populate str ...
NSString *message = [NSString stringWithFormat:@"[%s]", str];
free(str); // should this be here, or after I'm done with message?
この時点でも、論文にも研究を与えることができます:@ ""は常に定数NSStringsを返し、stringWithFormatはNSStringオブジェクトのクラスメソッド(あなたには表示されません)であり、返されるオブジェクトは型ですARCで "コンパイラは自分のメモリ管理に気をつけます"。 –
実際にここでC文字列を安全に削除できる理由は2つあります。最初に、Matt Wildingが示唆したように、NSStringは常にデータをコピーします。第2に、合理的な言語やライブラリのsprintf型関数は、あなたの文字列を指すポインタを保持しません。渡すすべてのパラメータを書式設定することによって新しい文字列を作成するため、これらのパラメータは必要ありません再び。 – abarnert