privateメソッドをpeformSelectorで呼び出す
以下のようなライブラリが提供されているとします。
LibClass.h
@interface LibClass : NSObject - (NSString*)getVersion; // - (NSString*)getMinorVersion; これが隠されている @end
マイナーバージョンを取得するのにLibClass.aファイル内のprivateメソッドにアクセスしたい
let lib = LibClass() let minorVersion = lib.performSelector("getMinorVersion")
一応以上でprivateメソッドへアクセスできますが、Swift2.2以降だと警告が出てきます。
Swift2.2以降でpeformSelectorの警告が出ないようにする
LibClass.h
@interface LibClass : NSObject - (NSString*)getVersion; - (NSString*)getMinorVersion; @end
呼び出し
let lib = LibClass() let minorVersion = lib.performSelector(#selector(LibClass.getLibraryVersion))
これで警告がなくなる訳ですが、これってひょっとして...
ヘッダファイルに追記するだけでよかった
実はperformSelectorを使用せずともヘッダファイルに関数宣言するだけで使用できるようになります。
ただしメソッド名、引数と戻り値は一致させる必要が有ります。
let lib = LibClass() let minorVersion = lib.getLibraryVersion()