Swiftのバージョンが上がる前に、クロージャーに対して各種方法で変数をキャプチャした際の挙動を整理します。
ちなみに、新卒アドベントカレンダーではないです。
- ARCについての前提知識
- 強参照と弱参照の違い
- 強参照
- 弱参照
- キャプチャの種類
- 組み込み型の場合
- 何もつけない場合
- 値キャプチャの場合
- クラスインスタンスの場合
- 弱参照(weak)の場合
- 弱参照(unowned)の場合
- weak vs unowned
- まとめ
Swiftのバージョンが上がる前に、クロージャーに対して各種方法で変数をキャプチャした際の挙動を整理します。
ちなみに、新卒アドベントカレンダーではないです。
一ヶ月ほど前から、ちまちま開発を進めていた、 Swift用のデバッグロガー"Linna"の紹介です。
日本語ドキュメントはこちらです。
JavaやJavascriptなど、他言語の代表的なロガーの機能を踏襲しつつ、
出来るだけシンプルな使い方ができることを一つのコンセプトとして作りました。
2018/12/01 03:25:03 [INFO] [xxx.swift::someFunc():5] Hello!
今のところ、Carthageのみに対応しています。
import Linna func someFunc() { Linna.out("Hello!") }
Linna.setFormatPattern(with: "%d %obj <%level> (%file:%func:%line)") Linna.out("Hello!")
2018/12/01 03:25:03 Hello! <INFO> (xxx.swift:someFunc():5)
ログローテションの機能追加や、ロガーの非シングルトン化などのリファクタリングを計画しています。
デザインいじると上書きされてしまうから、いっそのことここに書いてしまおう。
/* 付け足す部分 */ body { font-family: "游ゴシック体", YuGothic, "游ゴシック", "Yu Gothic", "メイリオ", sans-serif; letter-spacing: 0.08em; } /* 記事の左側の日付の部分 */ div.entry-date { letter-spacing: 0.03em; } /* ソースコードはspacingを0にする */ pre.code { letter-spacing: 0; }