天天看點

iOS面向切面程式設計

這就是使用 AOP(Aspect-Oriented-Programming),翻譯過來就是「面向切面程式設計」

通過預編譯方式和運作期動态代理實作在不修改源代碼的情況下給程式動态統一添加功能的一種技術。

簡單來說,就是可以動态的在函數調用的前後插一段代碼

  • 通過預編譯和運作期動态代理實作在不修改源代碼的情況下給程式動态統一添加功能的一種技術 。

    動态在函數調用前後插入一段代碼 *

> [UIViewController aspect_hookSelector:@selector(viewWillAppear:)
> withOptions:AspectPositionAfter usingBlock:^(id<AspectInfo>
> aspectInfo, BOOL animated) {
>     NSLog(@"View Controller %@ will appear animated: %tu", aspectInfo.instance, animated); } error:NULL];
           

這樣在 UIViewController 的 viewWillAppear: 被調用後,還會再調一下我們定義的 Block,這段日志就會被輸出。而打點正好符合這種場景:正事幹完之後,額外幹一些跟業務無關的事情。