2009-07-15 11 views
1

私はこのチュートリアルYour First iPhone Applicationを使いました。私の質問は、次のようなチュートリアルの行についてです:UITextFieldDelegate UIVewControllerのプロトコル

また、ビューコントローラーもテキストフィールドの代理人になります。したがって、UITextFieldDelegateプロトコルを採用する必要があります。クラスがプロトコルを採用するように指定するには、クラスの継承元のクラス名の後ろに、角括弧(<>)でプロトコルの名前を追加します。

プロトコルをビューコントローラから削除すると、メソッドはまだ呼び出され(メッセージが受信され)、キーボードは閉じられます。私は、UITextFieldDelegateプロトコルのすべてのメソッドがオプションであることに気づいた。その場合、ビューコントローラがプロトコルに従うことを宣言するのはなぜですか?私は何が欠けていますか? :-)

答えて

5

プログラマーは物事を整理しておくのが好きなので。プロトコルのすべてのメソッドがオプションであっても、そのプロトコルがデリゲートとして使用される場合、クラスがそのプロトコルを実装することを正式に宣言するにはまだまだ良い形式です。委譲クラスは、クラスがプロトコルを実装することを要求することもできます。つまり、メソッドを実装するが、プロトコルを実装すると宣言しない場合は、警告をコンパイルします。

+0

UITextFieldをView Controllerにリンクしているが、View ControlがUITextFieldDelegateプロトコルに従っていると宣言していない状況を見るためのコンパイラスイッチまたはディレクティブがありますか? –

+0

「LLVM 4.2 - 警告」で、「警告をエラーとして扱う」が「はい」に設定されていることを確認してください。LLVM Apple Compiler 3.xを使用している場合は、 – jcpennypincher

関連する問題