[weak self] と [unowned self]

[weak self] と [unowned self]

 swiftではクロージャ内からキャプチャするときに循環参照を避けるために [weak self] と [unowned self] が用意されていてこれを用いると弱参照になり、循環参照を防ぐことが出来ます。
勉強した時には聞き流すように理解していましたが、いざ使おうと思うと使い分けが全くわからないという日々が続いていました・・・
よくわからなかったのでクラッシュする心配がなさそうな [weak self] を使っていましたが、記述が多少面倒でも今まで通りにしていこうと思います。

WebSocketにおいてエラー

 Socketを使っているアプリのバグ修正をしていたところ、swift_abortRetainUnownedという見慣れないエラーが出ていたのでエラー部分を見てみると、WebSocket.swiftにおいてunownedを使っている部分でエラーが出ていたのでweakに変更したところ問題なく動作しました。