普段コードを書いている時に Swiftが内部で どのようにオブジェクトを管理しているのかについて 考えることはあまり多くないかもしれません。 しかし 非同期処理を扱う場合など などのように weakといった キーワードを使用することは多くあると思います。 これは「弱参照」と呼ばれ 直接の参照(強参照)を持たないように Swiftに内部に指示をして 循環参照を起こさないための仕組みです。 こういった適切なメモリ管理を行わないと メモリが解放されないことでランダムにクラッシュが起こるなど 原因がわかりづらい不具合を発生させる可能性があります。 そこで今回は weakなどを使用することで Swiftが何をしているのかを 内部の仕組みから見ていくことで weakやunownedの使い方や オブジェクトのライフサイクルについて 学んでみたいと思います。 メモリの3つ仮想的な領域 メモリ自体はただのバ
![【Swift】Swiftのメモリ管理を内部の仕組みから学ぶ - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/f4e93d152d6b54ce0d9116e2a0b5cb2e19e0d498/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUUzJTgwJTkwU3dpZnQlRTMlODAlOTFTd2lmdCVFMyU4MSVBRSVFMyU4MyVBMSVFMyU4MyVBMiVFMyU4MyVBQSVFNyVBRSVBMSVFNyU5MCU4NiVFMyU4MiU5MiVFNSU4NiU4NSVFOSU4MyVBOCVFMyU4MSVBRSVFNCVCQiU5NSVFNyVCNSU4NCVFMyU4MSVCRiVFMyU4MSU4QiVFMyU4MiU4OSVFNSVBRCVBNiVFMyU4MSVCNiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YWEwNDUzNTkyZTRjNzkzMzU3MzlmNDhlYmQ0Y2VlYzM%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBzaGl6JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1kMjdlOWFhMThlMWM1MjNkMDczZDM2ZTE1ZmYzZDMxNQ%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D26a7a5c7b8177dd1ef703e3cae354cbf)