ARCでは、すべてのIBOutletをプロパティにするのは何ですか?ビューコントローラによって内部的にのみ使用されるIBOutletsにivarsを使用することの欠点は何ですか?ARCの下でIBOutletsのプロパティを使用することの有用性は?
答えて
setter/getterメソッドを何も使用しない場合は、それらのプロパティのキー値監視に頼らず、サブクラスがこれらのプロパティをオーバーライドすることで利益を得られることを期待しないでください。 ARCの下でIBOutletsにivarsを使用することに欠点があります。
ありがとうございます、ivarsは私のコードで 'self.'という接頭辞をたくさん削除します。 –
私の答えをチェックして、何が起こっているかについての洞察があれば教えてください。 –
私は私の "プライベート" IBOutletsにivarsを使用していて、メモリリークの問題が発生しました。 IBOutletsが__weak
の代わりに__unsafe_unretained
という属性を使用していたためです。 __weak
はiOS 4でサポートされていないため使用できません(私のアプリはiOS 4と下位互換性があります)。 ARC、IBOutlets、viewDidUnloadなどで実際に何が起きているのか把握するのは難しいです。一口...
とにかくIBOutletsをivarsからプロパティに変更したときに、メモリリークの問題が解消されました。
私自身の質問に答えるために、IBOutletsにivarsを使用することの1つの欠点は、__unsafe_unretained
属性を持つ場合、メモリリークが発生する可能性があることです。
これが漏れの原因であるとは思われません。あなたの店舗が「__unsafe_unretained」だった場合、定義上、それらのイナールは目標を保持しておらず、何も保持していないと漏れを引き起こすことはありません。あなたが追加したプロパティが同様に 'unsafe_unretained'であったかどうかを指定しなかったのですが、いずれの方法でも、プロパティを追加することで可能なのは、* more * retainの原因になります。詳細がなければ、あなたがなぜ漏れているのかは分かりません。本当に好奇心が強い場合は、別の質問を提出することもできます。 –
私が追加したプロパティは実際には 'unsafe_unretained'でした。私は実際にIBOutletsをivarsからプロパティに変更することで何が変わったのか、本当に困惑しています。たぶん私はXCodeの楽器を正しく解釈していないだろう。 –
unsafe_unretainedを実行するとクラッシュする可能性がありますが、リークは発生しません。私はあなたがインストゥルメンツを間違って解釈していると思いますごめんなさい。 :)しかし、それは何ヶ月もされている:あなたは何が起こっているかについての余分な洞察力を持っていますか? –
- 1. クラスを再利用する - 未使用のIBOutletsがクラッシュする
- 2. ARCが有効ではないがアークファイルがあるiOSアプリを使用することはできますか?
- 3. Objective-CではARCを使用していますが、通常は非属性をプロパティ属性として指定するだけでよいのですか?
- 4. javascriptでエラーが発生することなくプロパティの安全性を使用
- 5. ARC使用時のプロパティの再割り当て
- 6. Objective-CのARC読み取り専用プロパティと前ARCにプライベートセッター実装
- 7. 小数点以下の桁数を使用することでPerl 6の性能が低下する
- 8. ARCを有効にしたreinterpret_castの使用
- 9. 親指の有用性と有用性が見えません
- 10. NON-ARCプロジェクトでARC静的ライブラリを使用する
- 11. EXC_BAD_ACCESS ARCでデリゲートを使用するNSXMLParser
- 12. ARCの互換性とストーリーボード
- 13. ARCビルドアプリケーションで非ARCビルドフレームワークを使用できますか?
- 14. Yosysでのパスで使用できる有用な属性は何ですか?
- 15. ARCを使用したプリミティブデータ型の合成プロパティ - weakまたはassign?
- 16. パーティション間でデータベースファイルとトランスログを分離することの有用性
- 17. QAnimationフレームワーク:ここで使用するプロパティ
- 18. ARCの下の-viewDidUnloadの弱い、強い特性
- 19. ARCを有効にしてCFURLCreateCopyAppendingPathComponentを正しく使用する方法は?
- 20. ARCを使用してinit内のプロパティを設定していますか?
- 21. 多くのクラス属性でプロパティを使用する
- 22. LOOPNEの有用性
- 23. ARCを有効にしてプロパティを更新する
- 24. が(これは単なるデモ用である複数のプロパティを有する)Iは、以下のような単純なステートレスな成分を有する
- 25. 非ARC環境のプロパティでキーワード "strong"が使用されるのはなぜですか?
- 26. ARC対応プロジェクトで非ARCコードを使用する - Facebookを追加する
- 27. ブランチの下でvue-loaderを使用することは可能ですか?
- 28. 以下のコードスニペットでメソッドリファレンスを使用することは可能ですか?
- 29. ARCを使用してiosのreadonlyプロパティを宣言する正しい方法は何ですか
- 30. ARCを使用してObjective Cで文字列値を割り当てる方法は? ARCを使用して
なぜあなたはプロパティを作成する必要があると思いますか? – Phlibbo
@Phlibbo:私はここで、「良い習慣」であり、viewDidUnloadコードを簡素化することを見ています。 –
Scott MeyersとHerb SutterがC++で書いたものに似た「Effective iOS」の本があったらいいのに。 –