xib动态链接--解析sunnyxx的黑魔法

sunny大神的blog关于 xib的动态桥接 和demo sunnyxx/XXNibBridge · GitHub

那么在研究了孙源大神的demo之后,我来做个总结吧。

1. 在load方法里面将系统方法awakeAfterUsingCoder和作者自己自定义的hackedAwakeAfterUsingCoder方法交换。

这里load方法是当app启动时第一次将所有类都加载的时候调用。

这里sunny大神运用runtime的黑魔法,将系统方法的指针指向了自己的方法内部实现。

2. 让xib中的view遵守XXNibBridge协议。

  之所以要遵守这个协议是因为,在被替换的方法hackedAwakeAfterUsingCoder中用到了作者自己设计的方法。不遵守就不能用,则替换方法就不起作用。

  因为替换方法会被系统自动调用,因此作者只在load中替换掉,并在自己的hackedAwakeAfterUsingCoder方法中实现即可。

3. 当加载对应的xib时,系统会找到作者自定义的方法hackedAwakeAfterUsingCoder,这时,将rearview替换掉placeholder view即可。

也即是迁移AutoLayoutConstrains。

至于从xib创建真正的view时也会调用这个方法,会造成递归,用flag进行判断。demo中并没有写。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容