ARCでコンパイルしない場合は、copy
などのデータ型にNSString
プロパティを使用することをお勧めします。 ARCモードでのcopy
の使用に関する適切なドキュメントが見つかりませんでした。 ARCに適用できるものを誰か教えてもらえますか?
変更可能な文字列を渡して、知らないうちに変更するようなものを避けたいので、コピーすることをお勧めします。コピーは、お持ちの文字列が変更されないことを保証します。
コピーとARCは直交しています。変更可能なオブジェクトのコピーを作成して、その状態を「フリーズ」します。 ARCは、オブジェクトの参照カウントを追跡します。
NSString
オブジェクトは可変である場合とそうでない場合があります。 NSString*
をパラメーターとして使用すると、型を確認しない限り不変であることを確認できません(その場合でも誤検知が発生する可能性があります)。アルゴリズムが、設定後に変更されない文字列に依存している場合、コピーを作成することが正しいことです。一方、ARCは、オブジェクトへの強い参照を保持している間、オブジェクトが解放されないようにします。
copy
はstrong
としてカウントされます。使用する:
@property(nonatomic、copy)NSString * name;
https://devforums.Apple.com/message/654033#6540
あるいは:
@property NSString * firstName;
[〜#〜] arc [〜#〜]またはnon-ARCを使用しているかどうかは関係ありません。
copy
の背後にある理由は、クラスの内部状態が実装の外部から変更できないことを保証できるようにするためです。
これは、誰かがあなたにNSMutableString
を渡し、後でそれを変更した場合に発生する可能性があります。この考慮事項は、メモリ管理環境とは無関係です。