機能を保持するかどうかをチェックするXcodeのツール?

私は現在、アプリケーションに取り組んでいます。そして、この痛みは...でも、とにかく痛みです。私は常にオブジェクトのプロパティが保持されているかどうかを知るためにドキュメントをチェックしなければなりません(たとえば、UITextFieldのsetDelegateはデリゲートを割り当て、保持しませんが、setFont関数は... https://developer.apple.com/library/ios/#documentation/uikit/reference/UITextField_Class/Reference/UITextField.html

それは...痛みです。そのようなことをXcodeで直接知る方法はありますか?

前もって感謝します

0

3 答え

デリゲートは特殊なケースです。デリゲートとして設定するのは、通常、デリゲートしているオブジェクトのライフタイム以上のオブジェクトです(つまり、ビューコントローラはテキストフィールドのデリゲートになります)。この設計パターンのために、保持サイクルを避けるために代理人は保持されずに割り当てられます。他のオブジェクトのデリゲートとして機能する新しいオブジェクトを作成している場合は、そのオブジェクトを保持する必要がありますが、そのようにするのは賢明ではありません。

それ以外の場合は、あなたの問題が何であるか、なぜドキュメンテーションをチェックしているのか分かりません。保持や他の方法でフレームワークオブジェクトがそのプロパティに対して行うことを気にする必要はありません。自分のコードで保持しているリリースやリリースについては、気にする必要があります。

UIKitオブジェクトがそれを保持していないため、自分自身を保持しなければならないUIKitオブジェクトに非代理プロパティの例がありますか?

2
追加された

私はObjective Cを初めて勉強しました。しかし、あなたは本当に知る必要はないと思います。あなたはプロパティを渡すだけで、それを保持するかどうかはクラス(この場合はUITextField)までです。あなたが他の何かのためにそれを必要としない限り、あなたはそれを渡した後にそれを保つ必要はありません。

また、ARCに切り替えてみてください。初心者の方にとっては頭痛の少ないものです。

0
追加された
iOS 4はARCをサポートしています。
追加された 著者 zaph,
私は完全な初心者ではない、私のための頭痛、私はかなりうまくいかない保持かどうかで起こる。しかし、いくつかの機能は、いくつかの機能はありませんし、あなたは毎回その文書をチェックしなければならないということは遅れています...しかし、私はメモリ内で何が起こるかを制御したいので、私たちはまだiOS 4をサポートしていますので、本当に私のためではありません:-)
追加された 著者 Redwarp,

簡単な答え:iOS5のみをサポートし、ARCを使用するように切り替えます。あなた(ほとんど)はこのようなことを心配する必要はありません。

しかし、実際には、とにかくそのようなツールは必要ありません。大会はとてもシンプルです。

  • 何かを割り当て、保持またはコピーする場合は、ある時点でリリースする必要があります。
  • そうでなければ、

デリゲートは実際には違いはありません。どうして?さて、デリゲートは、デリゲートのオブジェクトと少なくとも同じ長さでなければなりません。したがって、setFont:の例とは異なり、 allocを実行する可能性は非常に低いです。デリゲート= ...;リリース

0
追加された
うん。通常の使用パターンは、あなたのView Controllerが、例えばUITextFieldを作成し、そのデリゲートとして機能することです。デリゲートが割り当て解除された後でデリゲートにメッセージを送信する状況を避けたいとします。しかし、テキストフィールドは決して起こらないView Controllerの前に割り当てが解除され、デリゲートを保持する必要はありません。
追加された 著者 Stephen Darlington,
私のリストに別のルールを追加したい場合は、代理人は保持されません。これは、保持サイクルを避けるためです。一般的に - 常にそうとは限らないが、ほとんどの場合 - デリゲートを保持することは、メモリ管理が間違っているか、少なくとも過度に複雑であるという兆候です。
追加された 著者 Stephen Darlington,
いいえ。デリゲートは保持されておらず、割り当てられているため、いつでもrefを保存し、最後にオブジェクトを必要としないときに解放する必要があります...そして、私はまだいくつかのためにios 4をサポートする必要がありますより多くの時間(長くないが、まだ)。私が "私"と言うとき、私は "私の会社と私"
追加された 著者 Redwarp,
うん、ドキュメントは言った:@プロパティ(非原子、割り当て)id デリゲート。だから私は考えました:「地獄、ドキュメントがそのようなことを言うなら、Xcodeのどこかで利用可能かもしれない。したがって、ツールに関する私の質問: '(
追加された 著者 Redwarp,