初期化中に「自己」にメッセージを送信することは想定されていないことを読みました。残念ながら、スーパークラスに属する ivar に直接アクセスすることはできません (私の知る限り)。これは、何らかの方法でスーパークラス ivar にアクセス/設定する必要がある状況につながりますが、自分自身にメッセージを送信する以外にそうする方法はありません。(参考までに、アプリケーションで繰り返される概念をカプセル化するカスタム UIControls を作成しています。多くのロジックが共有されているため、スーパークラスに属していますが、各コントロールの正確なレイアウトは変更する必要があります)。
たとえば、カスタム コントロールにはボタンが必要です。そのボタンは、問題のサブクラスに応じて、ビュー内の他の各オブジェクトと比較して配置が異なるため、レイアウトのために参照する必要があります。私の知る限り、ViewControlllers とは異なり、UIView には「willAppear」や「didLoad」などのライフサイクル イベントを知らせるコールバックがありません。init は、コードを配置する唯一の場所です。カスタム UIControl の作成について読んだチュートリアルでも、そこに配置されています。
私は何かを誤解していますか、それとも私のシナリオで自分自身にメッセージを送信することに関するルールに違反するしかありませんか? (または、init の後に呼び出さなければならない追加のメソッドを作成します... 基本的に「最初に init してから、実際に init する」という新しい規則を作成します!)