美文网首页
Aspects的简介与hook

Aspects的简介与hook

作者: 天城一哥 | 来源:发表于2016-09-28 10:41 被阅读262次

hook:

Aspects
不知道一个方法什么时候执行的时候用得到

a).一个简洁高效的用于使iOS支持AOP面向切面编程的库.它可以帮助你在不改变一个类或类实例的代码的前提下,有效更改类的行为.比iOS传统的 AOP方法,更加简单高效.支持在方法执行的前/后或替代原方法执行.

b).Aspects 用于支持AOP(面向切面编程)模式,用于部分解决OOP(面向对象)模式无法解决的特定问题.具体指的是那些在多个方法有交叉,无法或很难被有效归类的操作,

c).你监测一个模态显示的控制器何时消失的示例,可以用得到.
d).Aspectes 会自动标记自己,所有很容易在调用栈中查看某个方法是否已经调用:
e).当应用于某个类时(使用类方法添加钩子),不能同时hook父类和子类的同一个方法;否则会引起循环调用问题.但是,当应用于某个类的示例时(使用实例方法添加钩子),不受此限制.
使用KVO时,最好在 aspect_hookSelector:
调用之后添加观察者;否则可能会引起崩溃.3.
调用方法:
performSelector:
[animal performSelector:@selector(animalFunc)]:(如果animalFunc没有接口,可以用这个调用).
原来的.h与.m文件的内容如下:
.h:(由此可见,没有接口,根本没有animalFunc方法)

import <Foundation/Foundation.h>

@interface Animal : NSObject

@end

.m:

import "Animal.h"

@implementation Animal

  • (void)animalFunc{

    NSLog(@"animal_func");
    }
    @end

doesNotRecognizeSelector:(挂掉之前调用里面的方法):

  • (void)doesNotRecognizeSelector:(SEL)aSelector{

    NSLog(@"-->%@",NSStringFromSelector(aSelector));
    //...
    // [];
    [super doesNotRecognizeSelector:aSelector];
    }

NSSelectorFromString(@"dealloc") 把一个字符串转变成一个方法.

相关文章

网友评论

      本文标题:Aspects的简介与hook

      本文链接:https://www.haomeiwen.com/subject/vcmhyttx.html