デフォルトでは、データモデルからNSManagedObjectサブクラスファイルを作成するとき、Core Dataは文字列型列のNSString(非原子的、保持)のプロパティを作成します。私はパフォーマンスの考慮のために行われるかもしれませんが、コアデータのNSManagedObjectサブクラスがモデルクラスから分離されているData Mapperパターンを実装しています。したがって、モデルクラスをコアデータNSManagedObjectサブクラスに変換するときは、retainは単にコピーではなくポインタを割り当てます。アーキテクチャーの観点からは、コアデータアクセスとモデルクラスの間の論理分離を制圧するので、retainの代わりにcopyを使用する必要があります。NSManagedObjectのNSStringプロパティを "保持"ではなく "コピー"にするにはどうすればいいですか?
NSManagedObjectサブクラスのプロパティを手動で変更する唯一の方法はありますか?
通常の(変更不可能な) 'NSString'の' copy'メソッドは同じインスタンスを返しますので、あなたのコピープロパティを気にしないで、実際には何もコピーしませんあなたがそれをテストするとき。 – Monolo
はい、私はそれが既にテストされていることを認識しています。 "Copy"は、可変型オブジェクトだけをコピーします。また興味深いことに、 "copy"プロパティはNSArray要素にもコピーメッセージを送信するので、配列内に存在する場合は変更可能な文字列がコピーされます。 – Centurion
答えの下に私のコメントを見てください。今日では、実用的な "コピー"特性を理解しようとしました。どのように動作するのか理解しています。NSMutableStringを使用する必要はありませんでした。私の経験ではコピーは冗長で、今後の保護のためだけです。 – Centurion