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:アニメーション
ビューが表示されるようになると呼び出されます。サブビューの大きさ(つまり、境界、フレーム、位置など)はこの関数でのみ使用できるので、上記の方法ではなく、これらの量に依存する変数を初期化する必要があります。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です