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