美文网首页iOS 黑魔法
xib动态链接--解析sunnyxx的黑魔法

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

作者: Hollylord | 来源:发表于2015-10-21 16:54 被阅读733次

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中并没有写。

相关文章

网友评论

    本文标题:xib动态链接--解析sunnyxx的黑魔法

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