在提交 Mac App Store 时,是否保证 /usr/include 中的所有标头都被视为公共 API 的一部分?
例如考虑文件 /usr/include/copyfile.h
这个文件中的注释是这样说的:“这个实现是不完整的,接口可能会在未来的版本中改变。” 这是否会使标头不公开?如何确定标头是否被视为公开?
在提交 Mac App Store 时,是否保证 /usr/include 中的所有标头都被视为公共 API 的一部分?
例如考虑文件 /usr/include/copyfile.h
这个文件中的注释是这样说的:“这个实现是不完整的,接口可能会在未来的版本中改变。” 这是否会使标头不公开?如何确定标头是否被视为公开?
如果有记录,它是公开的。您的系统上有很多 .h 文件引用私有 API。这不是你知道它是否安全的方式。它是存储安全的,它记录在框架文档中。
阅读本文档页面的底部。
摘抄:
Mac OS X 在 /usr/lib 目录及其子目录中包含许多动态库。动态共享库由它们的 .dylib 扩展名标识。库的头文件位于 /usr/include。
似乎这里的含义是.dylib
OS X 中包含的库是在您的应用程序中使用的公平游戏,但您需要注意它们不保证在例如 Lion 上具有特定版本的库,所以您应该包括最通用的版本。
正如@Dan 所说,另一件可以提示您使用可以使用的库的事情是它是否具有联机帮助页。copyfile有一个手册页,因此可以很好地使用(因为他们正在向您展示如何使用它!)。为了让事情变得更加模糊,请查看getattrlist手册页,然后搜索“copyfile”。您可以阅读的卷功能标志之一表示支持第二个copyfile() API。因此,在这种情况下,有 2 个 copyfile() API,您只能将一个与手册页一起使用,因为另一个在此处被标记为私有且未记录。
任何不包含在 Framework 文件夹中且与.dylib
手册页或联机帮助页不匹配的标题,我通常会避免使用。