大解剖!UIColorファミリー by しもとり

iOSDC Japan 2020
採択
2020/09/21 13:20〜
Track A
レギュラートーク(20分)

大解剖!UIColorファミリー

S_Shimotori_pub しもとり S_Shimotori_pub

皆さんお馴染みUIColorは色データを記憶しているクラスですね。
色の名前やコンポーネント値を決定してUIViewに与えるだけの超単純なヤツ……

ではありません!UIColorがサブクラスを大量に持っているって知っていましたか?その数なんと18個(私調べ)!稀に見る大家族です。しかし我々がサブクラスを意識することはありません。UIColorのサブクラスは全てprivateで、表に出てくることはありません。

それにしても、18個もprivateなサブクラスを持つなんて、UIColorはどんな仕組みになっているのでしょうか?そもそもpublicなイニシャライザは10個だけ、メソッドも8個しかないのに何がどうなってるの??

本セッションでは、UIColorの構成を考察したり、ドキュメントにない細かい仕様を確認したりして、UIColorともっと仲良くなります。

【対象】

  • UIColorをご愛用の皆様
  • UIColorは色空間とコンポーネント値を保持してるだけの単純なヤツと思っている皆様
  • dynamic colorを酷使する予定の皆様

【トーク内容】

  • UIColorの全体像ってどうなってるの?UIColorのヘッダを覗き見しちゃおう!
  • そんなにサブクラスがあって何かメリットがあるの?
  • サブクラスはそれぞれ何をしてるんだろう?
  • dynamic colorの仕組みってどのように実現しているのだろう?サブクラスを自作して内部実装と仕様を考察してみよう!
  • ↑dynamicなサブクラスの自作が実質不可能になっているという話も。

注:本プロポーザル中の数字はiOS13.5時点のものです。iOS14でイニシャライザが1つ増えそうだということは、つまり?