UIPickerView を操作すると、少し混乱します。
pickerView:titleForRow:forComponent: がデータソース プロトコルの一部ではないのはなぜですか? これは、ビューにデータを取得するための主な方法です。ただし、データソース プロトコルの一部ではなく、デリゲート プロトコルの一部です。
そして、なぜこのメソッドはオプションなのですか? 実装する必要はありませんが、実装しないとあまり見えません。しかし、numberOfComponentsInPickerView: と numberOfRowsInComponent: を実装する必要があります。
これは不完全で正しくないと感じます。