iOS/Swift-ARC(3)用
キャビネット内のStrong Reference Cycleの解決
これらの問題を解決するために、モジュール内で「capture list」を定義します.
Capture listは、モジュール本体内で別の参照タイプ(i.e class)にアクセスする際に使用するルールを定義します.
モジュール内でselfをキャプチャするとdefaultは強い参照になるため、参照ループは発生しません.弱い参照として指定する必要があります.
💡 **なぜキャビネットでselfを使用するのですか?**(ex. self.someProperty() )
SWIFTは基本的にselfを理解せずにキャプチャすることを要求する.このようにしてこそ、retain cycleが発生することを事前に意識することができるからです.
取得リストの定義
Capture「List」なので、配列に似た形で定義されています
lazy var someClosure = {
[unowned self, weak delegate = self.delegate] (index: Int, stringToProcess: String) -> String in
// closure body goes here
}
モジュールに書き込まれたパラメータがない場合、または戻りタイプがない場合は、「in」キーを貼り付ける必要があります.lazy var someClosure = {
[unowned self, weak delegate = self.delegate] in
// closure body goes here
}
→弱さを使えば、傍観者なので、selfが存在するかどうかは、エンクロージャ内で安全に確認できます.→unownedはselfが確かに存在する場合のみ使用
✻上で定義したHTML ElementクラスのasHTMLプレゼンテーションは、モジュール内では弱いselfよりもunwnedと呼ぶのが適切です.HTML ELLentインスタンスがなければ、最初からasHTML()が呼び出されないからです.
Reference
この問題について(iOS/Swift-ARC(3)用), 我々は、より多くの情報をここで見つけました https://velog.io/@kevinkim2586/iOSSwift-ARC에-대해-3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol