メソッドに前後処理を加えるライブラリはいくつかあるが、このライブラリはメソッドを正規表現でまとめて対象にできるのが面白い。
引用
BlockInjectionとはなんぞや
Objective-Cの特定のメソッドの前後に処理を追加できるライブラリです。
クラスの外側からアスペクト指向的に振る舞いを追加できるのが特徴です。
「UIViewの勝手に呼ばれているsetterでまとめて全てログ出力させる」ことが3行でできる。
[BILib injectToClassWithNameRegex:BIRegex(@"^UIView$") methodNameRegex:BIRegex(@"^set.*$") preprocess:^{ NSLog(@"%@", [BILib prettyFunction]); }];
結果
-[UIView setContentScaleFactor:] -[UIView setFrame:] -[UIView setNeedsDisplay] : :
クラス名とメソッド名を正規表現でできるアイディアが秀逸で強力。いろいろ使いでがありそう。