名前のコンフリクト
ケース
この例ではUIViewControllerにUIViewをセットしたい場合に以下のクラス名指定をしてしまうと次の事象に遭遇し正しくViewが描画できない。この事象により数時間ハマったため、自分用メモで残す。
事象
互いのクラス名が連続して同一の文字列が(この例ではDisplayViewがそれにあたる)複数含まれているとダメっぽい。
例えば、NameDisplayViewController.xibにDisplayView.xibというxibを作った場合、ビルドは通るが、実行時にクラス名指定が原因によるコンフリクトを起こす。起こる現象としては、
- 正しくViewが描画できず意図した処理結果が出力されない
などの問題が起きる。対策としては
- 制御と表示など、それぞれ意図した処理に準拠したクラス名を指定する (NameViewController.xib, NameDisplayView.xibなど) (UIViewControllerとUIViewの名前を2部分以上連続して同じ名前にしない)
などが挙げられる。
備考
実行時にエラーも吐いたが、そのエラーメッセージから読み解くというより、エラーメッセージに応じたパターンがあるので適宜調べると良いかも。
サンプルのパターンに限らず他コンポーネントに対するクラス名の指定に関しては、ほぼほぼ本内容が当てはまる。