Swift
年末年始に飲み過ぎないために
Measurement API の使い方を、年末年始らしいコード例で分かりやすく説明されています。
Swiftプロジェクトのビルド時間を計測・改善するxcprofilerを作った話
そこで、Swiftコードのビルド時間をメソッド単位で計測して様々な形式で出力するユーティリティ「xcprofiler」を開発しました。
手元のXcode でビルド時間確認する分には、 BuildTimeAnalyzer-for-Xcode で充分ですが、CI上などで実行・監視したいなどの目的から作られたようです。
iOS
IGListKit — Migrating an UITableView to IGListKitCollectionView
既存のUITableView 実装を IGListKit を使うように変更する方法が紹介されています。IGListKit が活きそうな画面では試してみる価値ありそうと思いました🤔
Swift Evolution
SE-0110: 関数引数が単一タプルか複数引数によって、型を区別 が Swift 4 に実装
Minor changes to user code may be required if this proposal is accepted.
SE-0110 が master にマージされました。Swift 3.1のリリースプロセスおよびそれに含まれる変更内容の紹介(前編)に書きましたが、今年2017年1月16日までに master に入れられた変更は Swift 3.1 に入るはずです。それなのになぜ 3.1 に入らずに 4 かというと、おそらくまあまあ影響のある破壊的変更を含むためだと思われます(どこかにそう明記されていそうですが)。 https://github.com/apple/swift/pull/6133/files を見ても分かる通り、getASTContext().isSwiftVersion3()で処理分けして 3系と4以降で振る舞いを変えて、3系では既存の挙動を維持しています。つまり、コード的には Swift 3.1 に入りつつ、発動するのは 4 以降ということになります。
Swift4に1つ実装がお仲間入り という記事に書かれていましたが、説明が逆になっていたのが気になりました。
以下のコードは 3 では動きますが、4 では「contextual closure type ‘(Int, Int) -> Void’ expects 2 arguments, but 1 was used in closure body」 というコンパイルエラーになる、というのが正しいです(記事にコメント欄が無かったのでこちらで補足)。
let f1 : (Int, Int) -> Void = { x in
// x -> (Int, Int) として識別される
print(x.0, x.1)
}
ライブラリ
evermeer/AttributedTextView
Easiest way to create an attributed UITextView with support for multiple links.
UITextView 用のライブラリと書かれていますが、Use the attributedText functionality on a UILabel と書かれているように、インタラクション付きの書式機能以外は UILabel にも使えるので、NSAttributedString を扱いやすくするライブラリの一貫ですね。UITextView に makeInteract
メソッドのクロージャーでアクションを設定できるのが良い感じです。
以前、NSAttributedString を扱いやすくする以下のライブラリも紹介しましたが、似ていますね。
デザイン
Introducing Auto-Layout for Sketch
Sketch で AutoLayout の代表的な指定が使えるようになるプラグインがリリースされました。試しに使ってみましたが、良い感じです👏
筆者の小話
お正月で、全体的に動きが少なめなので、ボリューム少なめでした( ´・‿・`)
バックナンバーはこちらから一覧出来ます。
↓アカウントやSwift・iOSコラムPublicationフォローしていただけるとありがたいです🙇 PublicationフォローしていただけるとこのSwiftレターのメール通知も届くようになります( ´・‿・`)