高少东
高少东
在开源这份代码之前我并未了解和使用过aspect,发表完https://mp.weixin.qq.com/s/wxigL1Clem1dR8Nkt8LLMw 这篇技术文章之后看到有些留言提到了aspect然后我去github大概看了一下基本思路都是基于类似kvo的isa替换,但是从api设计以及实现上也有明确的区别。具体区别或者异同我最近先研究下aspect源码,随后会给出答案。
在开源这份代码之前我并未了解和使用过aspects,发表完https://mp.weixin.qq.com/s/wxigL1Clem1dR8Nkt8LLMw 这篇技术文章之后看到有些留言提到了aspects然后我去github大概看了一下基本思路都是基于类似kvo的isa替换,但是从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 = [Test...
> 其实触发方法转发走 forwardInvocation、替换 isa 指针、对象级别 Hook 等等这些都是老生常谈的Hook 技术,很多组件都基于这套方案来 Hook,在长时间使用后也暴露了很多已知的缺陷。我之前写的节流限频组件也是用到了这些技术,文章大部分都是介绍 Aspects 没有处理好的场景: > http://yulingtianxia.com/blog/2018/07/31/MessageThrottle-Safety/ > > 不过凡是基于方法转发的 Hook 方案都有一个无法解决的**致命问题**,就是父子类都 Hook 了同一个方法,然后子类调用父类 super 的时候会死循环。这也是为何这个方案在多年之后 Aspects 的作者终于声明它不再适用于生产环境。 > > 而此问题需要吴子奇基于桥的 Hook 在汇编层面来解决。 >...
兼容系统KVO已经实现,欢迎更新&反馈
> 1.Aspects在你说的那三个问题中是不存在的。实验了一下这三种情况,KVO和Aspects可以工作良好。虽然不知道readme是因为忘记更新了,还是说有其他的问题存在(不是这其中的三个问题) > > 2.还有就是文章说到KVO是获取原类的。那解释第三个问题是因为isa被重新覆盖,那第一个同样的也会有isa被覆盖。KVO应该是获取isa对应的类,而不是class方法对应的原类。所以第三个问题应该是因为类继承关系混乱了,因为KVO的类只会生成一次。KVO__A----->KVO__A__Custom----->KVO__A--->A,猜测类继承冲突,系统直接是KVO__A--->A,对象a是KVO__A的实例,所以失效 > 1.先调用 custom-KVO 再调用 native-KVO,native-KVO 和 custom-KVO 都运行正常 > 2.先调用 native-KVO 再调用 custom-KVO,custom-KVO 运行正常,native-KVO 会 crash > 3.先调用 native-KVO 再调用 custom-KVO 再调用 native-KVO,native-KVO 运行正常,custom-KVO 失效,无...
这个模仿的微博效果,修改下占位图显示方式就可以达到你的要求了
有的,双击图片 或者 捏合手势 都可以放大图片的
添加双击缩放功能,优化放大后黑边问题,但黑边问题稍微复杂,随后会继续优化,请持续关注,谢谢
已经解决大图变形问题、缩放后大面积黑边问题,请下载最新代码
我测试了,没有变形的,把你模拟器的运行结果截图我看下什么情况