ARCを使用してコンパイルしない場合は、NSString
などのデータ型にcopy
プロパティを使用することをお勧めします。 ARCモードでのcopy
の使用に関する適切な文書が見つかりませんでした。誰かがARCに適用可能なことを教えてもらえますか?ARCの下のNSStringプロパティは強くなければならないのでしょうか?
答えて
変更可能な文字列を渡すことを避けて、知らないうちに変更する必要があるため、コピーすることをお勧めします。コピーすると、あなたが持っている文字列は変更されません。
「保証」と言うとき、私はObjective-Cのベストプラクティスに準拠したコードを指しています。 'NSString'カテゴリに' copy'メソッドを追加するのは賢明だと思う不正プログラマを考慮することはできません。 – Joe
すごい説明マンです! –
NSMutableArrayをコピーするにはどうすればいいですか? –
ARCまたは非ARCの場合は問題ありません。
copy
の背後にある理由は、クラスの内部状態を実装外から変更できないようにするためです。
これは、誰かがあなたにNSMutableString
を渡してから後で変更する場合に発生します。この考慮事項は、メモリ管理環境から独立しています。
コピーとARCは直交しています。変更可能なオブジェクトのコピーを作成して状態を「フリーズ」します。 ARCはオブジェクトの参照カウントを追跡します。
NSString
オブジェクトは変更可能かどうかは関係ありません。 NSString*
をパラメータとして受け取ると、その型をチェックしない限り、それが不変であるとは確信できません。あなたのアルゴリズムが設定された後に変化しない文字列に頼っているなら、コピーを作ることは正しいことです。一方、ARCは、オブジェクトを強く参照している間にオブジェクトが解放されないようにします。
copy
は、strong
とカウントする。使用:
@property(nonatomic、copy)NSString * name;
https://devforums.apple.com/message/654033#654033
かさえ:
@property NSStringの*のfirstName;何をしようとする
最初のリンクにアクセスできません。誰かがリンク内の正確な投稿を引用できますか? – CyberMew
- 1. スウィフトの三元派とは、いつでも交換しなければならないのでしょうか?
- 2. ARC強力なプロパティ列挙エラー
- 3. ARCで強力なプロパティにself.iVarが必要ですか?私はそうのような、強力なプロパティを宣言した場合
- 4. NSManagedObjectのNSStringプロパティを "保持"ではなく "コピー"にするにはどうすればいいですか?
- 5. リークしないARCでCFUUID NSStringを作成するにはどうすればよいですか?
- 6. ここでex.classはどのように等しくなければならないのですか?
- 7. Keras ValueError:次元は等しくなければならない
- 8. typedefが強く型付けされていないのはなぜですか?
- 9. TypeError:strでなくdictでなければならない
- 10. Django - intでなくstrでなければならない
- 11. これをangular1でせねばならないでしょうか?
- 12. スーパー式のエラーのいずれかヌルでなければならないか、私は勉強しようとしている機能
- 13. ReSharperのようなものを作成しなければならない場合、どこから始めましょうか?
- 14. いつOSGIのようなプラットフォームを使用し、避けなければならないのですか?
- 15. 自分のOSカーネルを作るためにどのようなC++を学ばなければならないでしょうか?
- 16. なぜ私のvariadicマクロは引数を正しく受け入れないでしょうか?
- 17. なぜobjcブロックの割り当ては 'copy'でなく 'assign'でなければならないのですか?
- 18. 「あなたがたぶん「チャット」しなければならないのはどういう意味ですか?
- 19. 非定常強化学習の最近の報酬はなぜ高くなるのでしょうか?
- 20. なぜWPFの依存関係プロパティが静的でなければならないのですか
- 21. ループの反復はそれほどうまくいかないでしょう
- 22. 合成しないプロパティにはARCキーワードが必要ですか?
- 23. GeneratedMethodAccessor1,2などとは何ですか?なぜそれらが見つからないのでしょうか?
- 24. パターンマッチングは非誇りです - 最終的なガードの私の「そうでなければ」は空のリストをどう扱わないのでしょうか?
- 25. 入力は、入力が、例えば、等しくなければならない
- 26. Java:これはO(n)でなければなりません。多分ArrayListの問題でしょうか?
- 27. "TypeError:pygame.Surfaceでなければならない、タプルではない"何をすればいいですか? (pygameのスターター)
- 28. 複製された町は削除できません。クエリの問題でなければならないのでしょうか?
- 29. 私は何をしなければならないので、プログラムは真と偽の代わりに1と0を出力するでしょうか?
- 30. + $どのように基本的なだけではないでしょう
?適切な方法を知りたい場合は、コードの例を示してください。 – Dustin