質問: View Controller変数の初期化? これは私にとっては素朴な質問ですが、私はView Controllerにいくつかの変数を用意しています。つまり、これがカスタムクラスであれば、通常はinitメソッドまたはカスタムinitWithメソッドで初期化して値を与えます。 上記から得られるさらなる質問は次のとおりです。 View Controllerのinitメソッドはどこにありますか。また、View Controllerは基本的にクラスであり、ある場所ではalloc-initでなければならないためです。 View Controllerのインスタンスはどこに作成されますか? どうもありがとう、 パリジャット・カリア
回答: 適切な場所で変数を初期化することは、View Controllerにとって非常に重要です。あなたはそうすることができる4つの場所があります: 1)initWithNibName:bundle: これは実際にView Controllerのコンストラクタです。呼び出し[[MyViewController alloc] init]は、実際に[[MyViewController alloc] initWithNibName:nil bundle:nil]を呼び出して終了します。これは、デフォルトのnib名を使用していることを示します。 2)awakeFromNib ペンだけからView Controllerをインスタンス化するとき、新しいViewControllerを作成せず、既存のViewControllerを逆シリアル化するので、initWithNibName:bundle:は呼び出されません。この場合、deserialization後にawakeFromNibが呼び出されます。 initWithNibName:bundleとawakeFromNibは、ビューコントローラのライフサイクル全体を通して一度しか作成されず、「setup」という関数でこれらの変数を初期化し、initWithNibNameから[self setup]を呼び出すのに好きなビューに関係しない変数を初期化するのに適しています:バンドルとawakeFromNib。 3)viewDidLoad ビューがロードされたときに呼び出されます。あなたの意見に関連するものを初期化するには良い場所です。 4)viewWillAppear:アニメーション ビューが表示されるようになると呼び出されます。サブビューの大きさ(つまり、境界、フレーム、位置など)はこの関数でのみ使用できるので、上記の方法ではなく、これらの量に依存する変数を初期化する必要があります。