标签:mit ati 开源库 quota run 时间 file ide 研究
鉴于目前动态库在iOS App中使用越来越广泛,二进制的兼容问题可能会成为一个令人头疼的问题。本文主要对比一下C++、Java、Objecive-C和Swift的二进制兼容问题。
__TEXT__
段大小是有限制的,很多巨无霸App容易超出这个限制。iOS9之前每个架构的__TEXT__
段比较小,iOS9放大到了500MB。详细情况请看:To submit an app for review。C++、Java、OC和Swift分别实现Foo这个基类,然后再实现Bar这个子类,main则使用Bar类打印成员变量的信息。给Foo类添加成员变量member0
,重新编译Foo(make foo && ./main),Bar和main不变,然后观察执行结果。
代码地址:binary_compatibility_test。
LLDB一点有用的调试技巧。更多的调试功能,请参看:The LLDB Debugger。
作为一种崭新的语言,Swift的二进制兼容最差,匪夷所思啊。
另外大家讨论的时候也提到C++虚函数改变顺序会不会出问题。针对这个问题我验证了一下,确认C++虚函数表里面函数的顺序完全取决于函数在头文件中声明的顺序。
比如Foo有func1和func2两个虚函数,调换func1和func2的顺序,不重新编译main。在main里面调用func2,实际上会调用到func1。
https://yq.aliyun.com/articles/225948
C++、Java、Objective-C、Swift 二进制兼容测试
标签:mit ati 开源库 quota run 时间 file ide 研究
原文地址:https://www.cnblogs.com/feng9exe/p/10277252.html