かなりざっくりですが、
プロトコルというのは、「この関数や変数を実装してくださいね」というルールだけを決めたものです。
swift
1protocol HogeProtorol {
2 func Hoge()
3}
例えば上記のプロトコルに準拠しているクラスなどはHogeという関数を絶対に持っているという事がいえます。
逆に言えば、Hoge関数を実装していないクラスは「準拠していない」という理由でコンパイラに弾かれます。
swift
1class AAA: HogeProtorol {
2
3}
↑HogeProtorolに準拠していると見せかけてHoge関数が実装されていないので、コンパイルエラー。
アプリを作っていてよくあるのは、UITableViewDelegate(←これがプロトコル)などをクラスのコロンの後ろに書いたは良いものの、実装しなければいけない関数を実装しわすれていると「タイプ『』はプロトコル『』に準拠していませんのエラー」が出ると思います。
なお、実装しているつもりでも、関数の名前などが一文字でも違うと違う関数としてみなされるため、
例えば開発環境が変わってプロトコルの定義が少しだけ変わった場合に、いつのまにかクラスがそのプロトコルに準拠しなくなっている、なんて事もありえます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/17 09:53