There was an error while loading. Please reload this page.
どちらも同じエラーに見えるかもしれません。 しかし...コンパイルエラーは愛すべき神、ランタイムエラーは忌むべき悪魔。 まったくもって別物なのです。
ランタイム=実行時
つまり、アプリが起動してユーザーが使っているときですね。 ここで起きてしまうエラーですから、ユーザーに迷惑をかけてしまいます。 絶対に避けなくてはなりません...!
コンパイル=コードをアプリに加工する段階
決まった構文に従ってないと出るエラーです。 Xcode で ▷ ボタンを押して、アプリを作ってまーすってときにでるエラーの事ですね。 あと、Xcode ではコンパイル時でなくても随時構文を解析していますので、コーディング中に赤や黄色でエラーが出てくると思います。
嫌いですか?いやいや、よく考えてみてください。 たしかに、早くアプリ動かしてみたいのにコンパイルエラーで動かないのは残念な気持ちになります。 でも、決まった構文に従っていないコードは確実にバグります。そのとき、コンパイルエラーが起きないとどうなるか? バグを抱えたままユーザーのもとにアプリが届くわけですね...恐ろしい。 つまりコンパイルエラーは、避けるべきランタイムエラーになる場所を教えてくれる神だったのです!
0 になってはいけない変数に 0 を入れたらコンパイルエラーを起きるようにしたい。 そんなコードを書いて、ランタイムエラーを回避しようというやり方を教えるつもりです。 このとき、この二つに区別がついていないと、「エラーが無駄に増えるだけじゃん」となる危険があるからです。 さあ、コンパイルエラーを増やしていきましょう!