2013年4月4日木曜日

正規表現の使える block injection

メソッドに前後処理を加えるライブラリはいくつかあるが、このライブラリはメソッドを正規表現でまとめて対象にできるのが面白い。


引用
BlockInjectionとはなんぞや

Objective-Cの特定のメソッドの前後に処理を追加できるライブラリです。
クラスの外側からアスペクト指向的に振る舞いを追加できるのが特徴です。

「UIViewの勝手に呼ばれているsetterでまとめて全てログ出力させる」ことが3行でできる。
[BILib injectToClassWithNameRegex:BIRegex(@"^UIView$") methodNameRegex:BIRegex(@"^set.*$") preprocess:^{
  NSLog(@"%@", [BILib prettyFunction]);
}];

結果
-[UIView setContentScaleFactor:]
 -[UIView setFrame:]
 -[UIView setNeedsDisplay]
  :
  :

クラス名とメソッド名を正規表現でできるアイディアが秀逸で強力。いろいろ使いでがありそう。

0 件のコメント:

コメントを投稿