2016-03-25 9 views
0

私は現在、スタンフォード・イオスのチュートリアル・シリーズを見てスイフトを勉強しています。講師はファーストクラスでAnyObjectを使用すべきではないと述べました。私はちょうどそれの背後にある理由は何ですか?それは悪いコーディングの練習ですか?他の理由があるのでしょうか?助けをあらかじめありがとう!AnyObjectを使用しない理由は何ですか?

enter image description here

+1

型を厳しく指定すると、コンパイラがキャッチできるエラーが多くなります(実行時にクラッシュしない)。 – HAS

答えて

0

AnyObjectそれはObjective-Cでidに類似しているクラス(または参照型)のいずれかの種類を意味します。これは、すべてのクラスが暗黙的に準拠するプロトコルです。
問題は、コンパイラがコンパイル時にどの種類のオブジェクトであるかを知らないことです。つまり、メソッドを間違ったオブジェクトに送信するアプリケーションを簡単に構築できます。
通常、この種の例外は、NSObjectサブクラス「unrecognized selector sent to instance XXXXXX」でクラッシュします。
Swiftは厳しいタイピングが好きです。問題が発生する前に問題を修正できるので、これは本当に役立ちますが、オブジェクトをAnyObjectと定義するとすべてになります。

関連する問題