Objective-Cではたまにお世話になっていたプライベートメソッド
Swiftでも使おうとしたら、そのままでは使えなかったので、Swiftでも呼ぶ方法を調べました
用意するもの
- プライベートメソッド定義用headerファイル
- Bridging-Headerファイル
要は、Objective-C側でカテゴリとして再定義し、それをSwift側へブリッジしてやります
プライベートメソッド定義用headerファイル
ファイル名は何でもよいです
ここではPrivateMethods.h
とします
PrivateMethods.h
#import <UIKit/UIKit.h>
@interface NSObject ()
- (NSString *)_ivarDescription;
- (NSString *)_shortMethodDescription;
- (NSString *)_methodDescription;
@end
@interface UIView ()
- (NSString *)recursiveDescription;
- (NSString *)_autolayoutTrace;
@end
@interface UIViewController ()
- (NSString *)_printHierarchy;
@end
Bridging-Headerファイル
ファイル名は適当だと動きません
Bridging-Headerについての細かいことは、他の記事を参照してください
${ProductModuleName}-Bridging-Header.h
#import "PrivateMethods.h"
使い方
println(self.view.recursiveDescription())
こんな感じでOKです
注意
あくまでプライベートメソッドなので、リリースビルド時には削除しておくようにしましょう
アプリの審査にそのまま出してしまうとrejectの原因になってしまいます