Xcode6.4(Swift1.2)の環境から、Xcode7(Swift2)の環境にしたところ、オーバーライドしていたメソッドがエラーを出すようになってしまいました。
Method does not override any method from its superclass
「!」をつけなきゃならなくなったとかが大量に出たりする件については、大変だけどなんとかがんばってそれなりに修正しようという気にもなりますが、エラーメッセージとして、こういうのだけが出てるのはほんとややこしい。つか、よくわからん。
このエラーメッセージは、メソッドそのものに変更があったわけではなく、引数の型がオプショナルに変更された場合でもこんなエラーメッセージになるようです。Swift2での変更では、このような引数の型変更が結構あるようなので、このエラーに遭遇する人も多いんじゃないかと思います。
「[Swift] シェイクジェスチャーでビューを閉じる」であげたコードが同じエラーメッセージを出してましたので修正してみます。(当然ながらさまざまな原因がある中、そのひとつの例として考えてください。)
こういう場合は、もう一度、「motionE〜」と書き込んで、Xcodeに自動的にメソッドを書かせるといいです。引数に型変更があったことなんか知らなくても、書き込んでくれるので、そこでユーザとしては気がつく、というのが普通の流れがではないかと思います。
この場合、最後の「UIEvent」に「?」をつけるだけでエラーを回避することができるようになりました。
この修正の様子を録画しておきましたので、動画でも見てみてください。
「Method does not override any method from its superclass」の回避例 from mushikago on Vimeo.
東京造形大学卒業後、マクロメディア(現アドビ)に入社。QAやテクニカルサポートマネージャーとしてFlash、DreamweaverなどのWeb製品を担当。独立後、2007年に虫カゴデザインスタジオ株式会社を設立。2021年東京三鷹を拠点に。最近は、Unity, Unity Netcode for GameObjects, CakePHP, Laravel, ZBrush, Modo, Adobe Substance 3D, Adobe Firefly, Xcode, Apple Vision Pro, Firebaseにフォーカスしています。モバイルアプリ開発情報を主としたブログ「MUSHIKAGO APPS MEMO」の中の人。