iOSDC2019参加 前夜祭で聴講した2セッションの感想
Table of Contents
今年もiOSDCに参加しています。今年は、チケット購入後に外せない予定が入ってしまい、木曜夜の前夜祭と、金曜午後しか参加できません。短い時間ですが、情報のキャッチアップ含め、収穫の多い2日感にしたいです。
さて今回のポストは、前夜祭で聴講した2つのセッションのまとめです。自分のメモ用に書いているのでざっくりですが、スライドのリンクも付けていますので、参考になる方もいるかもしれません。
- SwiftのStringの文字の数え方を完全理解する(@taka1068さん)
- Advanced Segue 2019年のSegue事情(@tokoromさん)
iOSDCに参加した意義みたいな部分を強調していきたいので、見出しはセッション名ではなく、学んだこと・得た知識の要点を記載していきます。
SwiftのStringの文字数の数え方が理解できた #
String型は、Collection Protocolに準拠しているので、count
を呼ぶことができますが、どうやって文字数を数えているのか、という話。というのもStringは、内部的にはUTF-8のシーケンスとして保持しているから、Arrayと同じcount
ならバイト数になるんじゃないか?など疑問が湧いてきます。
例えば、「ぱ」の一文字をとっても、Unicodeの内部表現では「ぱ」そのものを示すU+3071
と、ひらがなの「は」と「゜」を組み合わせたU+306F
+U+309A
の表現があります(拡張書記素クラスタ Extended Grapheme Clusters を使用した表現)。
Stringのcount
では、半濁点文字のような「前の文字に結合する文字」や国旗🇯🇵(🇯+🇵)のように「特殊な文字が組み合わさるもの」は、結合して=Unicodeの仕様に従って1文字としてカウントすることで、見た目通りの文字数を返すようにしているらしいです。
その他、ある文字が何番目かを知るには、前の文字を知らないと判断できない(= N番目の文字を取得するための計算量は O(N))という話や、unicodeScalars.count
を呼ぶといくつのUnicodeで表現されているかが取得できるという話題もありました。
Segueにも4つの種類がある #
tokoromさんの発表では、Segueの使い方とiOS 13で追加された機能などを紹介、実例が多くてイメージしやすい内容でした。
Static TableViewとの相性がよいようです。特定のCellをタップしたときの処理をSegueに定義しておき、Cellに割り当てておくことで、処理がバインドできるイメージ。UITableViewDelegateのdidSelectRowAt
を実装しなくてもよくなるので、実装がシンプルになりそう。こんどStatic TableViewで実装するときは、試してみたいと思いました。
Storyboardを使っている人は会場の大半でしたが、Segueを使っている人は半分くらいまで減っていました。たしかに、Storyboardを使うと、チーム開発しているとコンフリクトしやすいから、Segueを使って複数の画面をStoryboardで管理するのは避けがちです。もしかして、うまくやる方法があるのかな……?
まとめ #
iOSDC2019の前夜祭に参加しました。ちょっと遅く到着し、オープニングは見られませんでしたが、2つのセッションを聴講できました。明日は午後から参加予定(午前中に予定がある)。しっかり寝て、体調万全で参加したいです。
翌日(1日目)の感想はこちら → 1日目の感想