SDMagicHook
SDMagicHook copied to clipboard
A safe and influence-restricted method hooking for both Objective-C and Swift.
最新的iOS15 ,release环境,APP界面卡主了,没有任何提示?怎么解决
///扩大点击响应面积,edge 正数值是缩小面积,扩大是负数 ``` func expandResponseArea(edge:UIEdgeInsets){ let imp: @convention(block) (UIView , CGPoint , UIEvent ) -> Bool = { (v,p,e) in v.callOriginalMethod { v.point(inside: p, with: e) //必须调用一次原始方法 } let r...
aspects和SDMagicHook基本思路都是基于类似kvo的isa替换,但是从api设计以及实现上也有明显的区别,我们通过以下示例简要介绍下: 1.解决了Aspects未能解决的KVO兼容问题,详见 https://mp.weixin.qq.com/s?__biz=MzI1MzYzMjE0MQ==&mid=2247486231&idx=1&sn=1c6584e9dcc3edf71c42cf396bcab051&chksm=e9d0c0f5dea749e34bf23de8259cbc7c868d3c8a6fc56c4366412dfb03eac8f037ee1d8668a1&token=1383088962&lang=zh_CN#rd 2.设计实现了一套更为高效灵活的API,举例如下 假设有这样一个自定义类Test,在其内部定义了一个求和的方法,接收四个int类型的参数。 ```objc @implementation Test - (int)sumWithA:(int)a b:(int)b c:(int)c d:(int)d { return a + b + c + d; } @end ``` 现在要求将四个参数分别平方然后再求和。 使用aspects实现如下: ```objc Test *testObj...
看了一下 SDOrderedDict 这个类的实现,是用来保存多个 key 相同的 value 的。而 Ordered 这个单词是表示”有序“的意思,大部分编程语言或者其标准库中都有 OrderedSet、OrderedMap、OrderedDictionary 的概念,表示这个容器内的元素是按 Key 排序的。 这里的 SDOrderedDict 是一个可包含重复 key 的元素的容器,可以参考 C++ STL 的命名,叫做 "MultiDict" 会更合适一些。