質問: ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/9fbeb55aaf85f1e34bee0e466195f9d4.png) ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/3ab537f3468082d60272007bdc1c4cdc.png) Xcodeを使ったアプリ開発全体に言えるのですが、Main.storyboard上のViewControllerのコーディング画面は上記の画像のように1それを一つのクラスとして2そこで行う処理や情報をそのクラスの中に書いていくというプロセスを辿っていますよね。これに関して質問が二つあります。 1 このクラスはいつインスタンス化されるのか 入門書などで文法を解説したものを見ると、その多くが「まずはクラスを宣言して、それをインスタンス化して初めて実体として現れる」というようなことを書いていますが、この例ではクラスを宣言しただけでインスタンス化していませんよね。この処理はXcodeが裏でやっているのだと思うのですがそれはどのタイミングでしょうか。 2 メソッドはいつ呼び出されるのか これも入門書では、「メソッドは定義しただけではダメでそれを呼び出さないといけない」と書いてありますが、この例ではそれもありません。いくつかサンプルアプリを作っていく中で、メソッドでも「ユーザーの特定の動作に対して自動的に呼び出されるもの」と「自分で呼び出してあげないといけないもの」の二種類があることがわかってきたのですが、その区別はどこでつければ良いのでしょうか。それぞれ暗記しても良いのですが、自分の知らない機能を搭載したアプリを作る機会はたくさんあると思いますし、その際は公式ドキュメントを見ながら使い方を覚えていくのだと思うのですが、公式ドキュメントを見てもどれが自動で呼び出されるのか、自分で呼び出す必要があるのかがわかりにくいです。みなさんはどうやって情報を仕入れているのでしょうか。 以上二つが質問になります。よろしくお願いいたします。
回答: ドキュメント読むのが近道でしょう。 ただし、読んで理解できるだけの実力は必要ですが。 今回の場合だと、とりあえずこの辺は必要かな。 * iOS View Controller プログラミングガイド * iOS Table View プログラミングガイド 読んでもチンプンカンプンなら、ググって解説記事を読みまくりましょう。 そして手を動かしてコードを書きまくりましょう。 それぞれの質問にも(ざっくり)答えておきます。 1. このクラスはいつインスタンス化されるのか ======================== * StoryboardのInitial View Controllerが生成される * それに紐付いているToDoListViewControllerのインスタンスが生成される という流れです。(コードしか書かれていないので予想ですが) 2. メソッドはいつ呼び出されるのか =================== そのコードにある、3つのメソッド全て勝手に呼ばれます。 * ViewDidLoad() * numberOfRows(inSection:) * tableView(_:cellForRowAt:) 上に書いたドキュメントを読めば分かります。(たぶん)