关注点是保证与编译到iPhone应用程序中的Sqlite Header文件的兼容性。如果在编译时使用的头文件是来自较新版本然后安装在iPhone上的动态库怎么办?这可能是因为应用程序运行在较旧或较新的iPhone OS版本上,然后应用程序就构建了。在iPhone上使用Sqlite动态库是否安全?或者我们应该始终静态链接。顺便说一句:宁愿不使用核心数据。
答案 0 :(得分:0)
SQLite对api兼容性非常谨慎。我认为有一些非常古老的api标记为已弃用且无功能但AFAIK仍然可以被调用。那说,为什么不包括合并?
答案 1 :(得分:0)
sqlite文档似乎建议检查头文件版本是否与库版本http://www.sqlite.org/c3ref/libversion.html相同。担心,因为似乎sqlite不提供合同/保证,事情将继续在不同版本中运行。除了弃用之外,还可能存在其他类型的不兼容性,涉及可能导致崩溃的行为或对象大小。到目前为止合并将为应用程序增加额外的680K左右。移动应用程序非常受欢迎。
答案 2 :(得分:0)
首先,iPhone环境受Apple严格控制,因此您不必担心设备上安装了各种各样的SQLite库。
其次,当您使用Xcode链接到库时,您可以选择链接到sqlite,sqlite3,sqlite3.6等。这样,如果您使用的是某个功能且无法使用3.6之前的任何内容,则可以指定所以在你的应用程序中。
第三,SQLite是一个稳定的项目,您可以相信作者不会在没有警告的情况下对API进行彻底的更改。如果你链接到sqlite3你应该是安全的,除非你做了一些非常奇怪的事情。
第四,如果你做的事情非常奇怪,那依赖于特定版本的SQLite的怪癖,那么你应该静态地链接到库或停止做那个非常奇怪的事情。
总之,是的,它是完全安全的,建议动态链接到iPhone上的sqlite库,除非你做的事情非常奇怪。