2016-07-11 12 views
0

私は保持サイクルの原因を切り離そうとしており、これが疑わしいと判明しました。それは私の役に立つパターンですが、このコードは保持サイクルを作成しますか?UIBarButtonのターゲットは保持サイクルを作成しますか?

myVC: UIViewController { 
    private lazy var cancelButton: UIBarButtonItem = { 
    return UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(onTapCancel)) 
    }() 
} 

APIが弱いか強い方法でselfにその参照を保持している場合、私は言うことができません。

答えて

1

いいえ、Appleが使用するターゲットアクションメカニズムでは、通常、このような理由でコントロールがターゲットを保持することはできませんが、ソリッドリファレンスを見つけるのは少し難しいです。

あなたがthe documentation for UIControlにチェックマークを付ける場合は、表示されます:

制御が対象パラメータにオブジェクトを保持しません。ターゲットオブジェクトがコントロールにアタッチされている間は、ターゲットオブジェクトへの強い参照を維持するのはユーザーの責任です。あなたがConcepts in Objective-C Programmingをチェックすると

、あなたが表示されます:

コントロールオブジェクトにはない(とはならない)彼らの目標を維持します。ただし、アクションメッセージ(通常はアプリケーション)を送信するコントロールのクライアントは、ターゲットがアクションメッセージを受信できるようにする責任があります。

関連する問題