2012-02-26 16 views
2

申し訳ありませんこれはすでに質問されていますが、検索して特定のケースに対する回答が見つからない場合は、今すぐ自分を見つけています。iOS:ARCのIBOutlets for nibs(カスタムUITableviewCell用)の強い参照または弱い参照

私はUITableViewControllerをサブクラス化しています。私はそれのためのカスタムペン先がありません。私はまた、私が実装しているtableviewcellカスタムを持っています独自のカスタムペンを持っています。このセルのコンセントを作成するときに弱い参照を作成する必要がありますか?それはTableViewControllerのサブビューとして終わるので、私ははいと思うだろうが、Appleのドキュメントは、ペン先のトップレベルのオブジェクトは強くなければならないことに注意しているので、私は混乱している。どんな援助も実現されるだろう!

+1

が重複する可能性を[IBOutletsはARCの下で強力か弱いか?](http://stackoverflow.com/questions/7678469/should-iboutlets-be-strong-or-weak-under-arc) – Steve

+0

間違いなく上記の投稿の複製。 – Steve

+0

それは、UIViewControllerではなく、テーブルビューセル用のカスタムペンですので、この質問にはメリットがあり、閉じてはいけないと思います。 –

答えて

1

弱い参照を使用してください。これは、ビューがアンロードされたときに弱い場合、リンクは自動的にnilに設定されるためです。

0

のセルをxibの外に置くと、それを強く参照する必要があります。そうしなければ、セルは使用前に解放されます。テーブルを構築する。

可能であれば、viewDidLoadでそれを使用した場合、それはまだ存在しますが、そのように動作するコールサイクルに頼らないのが最善です。

+0

"あなたがxibの外でテーブルビューにセルを置いた場合(そして私はあなたが本当にそうだと確信しています)"。私はあなたがプログラム的に意味すると思います。私はtableView:cellForRowAtIndexPathへの呼び出しでUITableViewCellペン先をロードしています。必要に応じてセルを設定しています。 – jkratz

+0

それは私が言ったこととほとんど同じです。あなたの参照が弱い場合、コードがそのメソッドに到達する前にセルがオートレリースされます(または、そうするべきです)。 –

0

これは関係なく、使用しているものUIViewのサブクラス真ではありません

「アップルのドキュメントも、私は混乱しているペン先のトップレベルのオブジェクトが強くなければならないことに注意してください」。 UITableViewCellとUIView IBOutlet(どちらもトップレベルオブジェクト)のペン先がある場合、UIViewは強くなければなりません。 UIView IBOutletがペン先のあなたのUITableViewCellのサブビューである場合、それは弱いはずです。

0

あなたはあなたのテーブルビューセルownership.Because弱い使用する必要があります持っていることへの強い参照が親ビューだと、それはこのようにサブビュー

だと、あなたの親ビューが強い参照を持っている:の

@property (weak, nonatomic) IBOutlet MyView *viewContainerSubview; 
@property (strong, nonatomic) IBOutlet UIView *topLevelView; 
関連する問題