親切すぎるiPhoneアプリ開発の本

画面の表示内容を外部からコントロールするには? - プロトコルのオプショナルメソッド

Icon comment count 0
Icon stock count 0

3 プロトコルのオプショナルメソッド

前回の最後に触れたUITapGestureRecognizerの隠蔽化は、ExtendablePalletViewDelegateプロトコルを拡張する事でも可能です。

例えば次のような、取っ手のタップを通知するメソッドを持たせるといった方法です。

↓ ExtendablePalletViewDelegateへの取っ手タップ通知メソッド追加
protocol ExtendablePalletViewDelegate : class {
    ・・・
    ↓取っ手に触れた
    func didTapHandlePalletView(palletView:ExtendablePalletView)
}

3.1 オプショナル・メソッド

ただ、こうしてしまうと、ずっとExtendablePalletViewを全表示のまま使おうとしているプログラマ(取っ手のタップに反応する気がない)には-didTapHandlePalletView:メソッドの実装作業という余計な手間をかけさせることになります。

このような問題を回避するために、プロトコル定義では、必ずしも実装する必要のないメソッドの先頭にoptionalキーワードを追加する方法があります。

optionalキーワードは、Objective-Cのプロトコル定義と互換性を持たせるために用意されたもので、プロトコルの先頭に@objcキーワードを付けることで利用できるようになります。

@objcキーワードの付いたプロトコルは、NSObject派生クラスでしか採用できなくなるという制限がつきますが、iOSの提供するクラスはNSObjectから派生しているので、それほど問題にはなりません。今回Exte

出典情報

Medium

親切すぎるiPhoneアプリ開発の本

  • 著者: 國居 貴浩

コメント

    コメントはありません