追記について 追記が増えたので以下の記事を新たに作成しました。こちらと合わせてご参照ください。 Swiftの循環参照問題におけるunownedとweakの使い分けについて はじめに クロージャーは定義したスコープの定数や変数をキャプチャすることができます。このキャプチャのおかげでインスタンス変数を定義して、値を保持する必要がなくケースがあるので便利に活用しています。ただキャプチャ値を利用する場合は、循環参照を考慮したコードを記述する必要があります。循環参照に陥ると双方のインスタンスがメモリ上から開放されず、メモリリークの原因になります。 クロージャの循環参照と回避方法 クロージャが循環参照をしている例です。 selfがクロージャを強参照し、クロージャがselfを強参照して循環参照に陥っています。 HTMLElementインスタンスはasHTMLプロパティで() -> Stringクロージャ