2012-02-18 5 views
0

Appleのドキュメントによると、UIViewnextRepsonderプロパティが接続されているのUIViewControllerを返します。なぜMontouchは、UIViewからUIViewControllerへの管理参照を保持していませんか?

https://developer.apple.com/library/ios/#documentation/uikit/reference/UIResponder_Class/Reference/Reference.html

そして、私はSDK 5のUIView.hを見れば、私は次のように見ることができます:

UIViewController *_viewDelegate; 

私にとってこれは、Appleが結合していないとAppleに伝えていますが、実際にはわかっていますが、気にしないでください。

しかし、管理されていない世界で参照が保持されている場合は、モノタッチで管理参照も保持しないでください。

クラスレベルで参照を保持することについては、多くのことを単純化しませんか? GCのビューコントローラが原因で一般的なトラップを減らさないでしょうか?

答えて

0

しかし、非管理の世界では、フィールドを有する状態に十分な証拠を提供していないので、仮定は(あなたがドキュメントを疑う場合は、テストは、それを証明する)間違っている可能性があります参照

を保持している場合ネイティブ側で参照が行われます。

ObjectiveCはガベージコレクタを使用していないため、(ARCを使用しても)参照カウントされます。だから、単純型定義のフィールドを持つことは、それがretainエドはない場合、すなわち、その後が増加していないUIView参照を(.NET/GC世界のように)、続ける意味するものではありません...

クラスレベルで参照を保持することについては、多くのことを単純化しませんか? GCのビューコントローラが原因で一般的なトラップを減らさないでしょうか?

私はあなたのことをよく理解していません。例を挙げてこれをバックアップすることはできますか?

+0

コントローラのビューが別のビューにサブビューとして追加されるローカルコントローラインスタンスの場合、コントローラが収集される可能性があります。これはMonotouchの典型的なトラップです。ビューが参照を保持する場合、これは起こりません。 – Krumelur

関連する問題