私は知っています、デリゲートは決して保持されません! これまで!
しかし、誰でもデリゲートが保持されない理由を説明できますか?...
事前にサンクス
それはメモリ管理のことです。
Objective-Cは参照カウントと連携して、メモリをクリーンに保ちます。これは、循環関係を検出できないことを意味します。
例:
それはあなた次第です。保持することを宣言した場合(strong
ARCで)、保持されます。
ルールは、他の場所で既に保持されているため、保持しないことです。さらに重要なのは、保持サイクルを回避することです。
To expand on djromero's answer:
If you have a UIViewController
which contains a UITableView
, the controller will be most likely retaining the table and it will be it's delegate / dataSource. If the table retains the delegate / dataSource, then they will be retaining each other and thus never getting released.
全体的な考え方は、デリゲートは、デリゲートとして割り当てるオブジェクトよりも常に長持ちする必要があるということです。したがって、Webビューは、割り当てられた代理人の前に解放されます。