delegateを実装しているとXCodeのバグにいくつか出会いました。
(1)プロトコルの実装
まず、プロトコルを採用したクラスでのこと。プロトコルで定義した関数を実装してもグリーンにならず白いままで、クラス部分には「プロトコルの関数実装してねーだろ」と出ます。
しかし、どう見てもスペルミスはない。悩んでエラーメッセージをクリックすると、なんとFixボタンが出てきてボタンを押すと、勝手に関数が表示されます。
しかたないので、関数の記述をそちらに移すとエラーは無くなりました。
どうやら、プロトコルの関数を手動で実装すると認識してくれない場合があるようです。
(2)関数の利用
おそらく同じ起源のバグと思われますが、関数を利用する側でも起こります。 delegate設定したオブジェクトの関数を認識してくれません。上記(1)でうまく言っていない場合もありますが、(1)で問題を解決しても、オブジェクトと関数は白いまま、という場合もあります。
そんなときは、一旦記述を消してから、表示されるガイドから関数を選択してあげるとうまくいきます。
ということで、Apple社内でもあまりデリゲートは使われていないのかもしれませんが、そんなバグがあったので気をつけてください。
(1)プロトコルの実装
まず、プロトコルを採用したクラスでのこと。プロトコルで定義した関数を実装してもグリーンにならず白いままで、クラス部分には「プロトコルの関数実装してねーだろ」と出ます。
しかし、どう見てもスペルミスはない。悩んでエラーメッセージをクリックすると、なんとFixボタンが出てきてボタンを押すと、勝手に関数が表示されます。
しかたないので、関数の記述をそちらに移すとエラーは無くなりました。
どうやら、プロトコルの関数を手動で実装すると認識してくれない場合があるようです。
(2)関数の利用
おそらく同じ起源のバグと思われますが、関数を利用する側でも起こります。 delegate設定したオブジェクトの関数を認識してくれません。上記(1)でうまく言っていない場合もありますが、(1)で問題を解決しても、オブジェクトと関数は白いまま、という場合もあります。
そんなときは、一旦記述を消してから、表示されるガイドから関数を選択してあげるとうまくいきます。
ということで、Apple社内でもあまりデリゲートは使われていないのかもしれませんが、そんなバグがあったので気をつけてください。
0 件のコメント:
コメントを投稿