摘要: 不知道你有没有经常遇到 这种 参数为 nil 的错误 或者是 数组错误。而且现在在 多线程中 还是 大量使用 block 的情况下 要查找起来 实在是 太费劲了所以 我用了个 取巧的办法(可能会导致你的逻辑错误) 用swizzle 来替换这些没验证的方法我是按我自己 umeng 的 错误统计来写的 给出个 例子而已+(void)callSafeCategory{NSError* error = nil;[objc_getClass("__NSPlaceholderArray") jr_swizzleMethod:@selector(initWithObjects:count 阅读全文
posted @ 2014-01-10 15:43 忘删 阅读(770) 评论(4) 推荐(0) 编辑
摘要: 在没有一个类的实现源码的情况下,想改变其中一个方法的实现,除了继承它重写、和借助类别重名方法暴力抢先之外,还有更加灵活的方法吗?在Objective-C编程中,如何实现hook呢?标题有点大,计划分几篇来总结。本文主要介绍针对selector的hook,主角被标题剧透了———— Method Swizzling 。Method Swizzling 原理在Objective-C中调用一个方法,其实是向一个对象发送消息,查找消息的唯一依据是selector的名字。利用Objective-C的动态特性,可以实现在运行时偷换selector对应的方法实现,达到给方法挂钩的目的。每个类都有一个方法列表, 阅读全文
posted @ 2014-01-10 15:42 忘删 阅读(421) 评论(0) 推荐(0) 编辑