向Xcode添加框架的最佳实践

时间:2013-06-13 05:20:09

标签: objective-c xcode app-store

我的应用程序被App Store拒绝,原因如下。

  

应用程序以脆弱的方式引用框架,这可能会导致   在虫子里。

     

应用程序使用相对路径引用以下框架:

     

'/库/框架/ iTunesLibrary.framework'

     

最佳Mac OS X开发实践建议使用(按顺序)

     

@ executable_path / @ loader_path / @rpath /

     

有关链接框架的更多信息,请参阅   以下文件:

     
      
  • 动态库编程主题的运行路径依赖库部分

  •   
  • dyld(1)手册页

  •   

我已阅读建议的文件,但我不明白它们与我的项目有什么关系。我想包含iTunesLibrary.framework,它似乎不是一个动态库。向项目添加非标准框架的最佳做法是什么?该路径应该是绝对的吗?

3 个答案:

答案 0 :(得分:2)

这里的问题可能与框架最佳实践无关。相反,这是因为iTunes Library的怪异。

为了避免必须包含iTuneLibrary的显式路径,您需要在构建设置中将“/ Library / Frameworks”添加到项目的Framework Search Paths中。 (是的,我知道这很奇怪)。

然后库不会加载并给你一个神秘的错误:

Could Not load iTunes Library because of error: Error Domain=NSPOSIXErrorDomain Code=100001 "Could not load." UserInfo=0x10340eaa0 {NSLocalizedDescription=Could not load., NSUnderlyingError=0x10341c610 "The operation couldn’t be completed. (OSStatus error 100005.)"}

这是因为您的应用未经过代码签名。您需要对其进行编码以使其正常工作。

来源和示例:https://github.com/zadr/iTunesLibraryExample

答案 1 :(得分:0)

Go through this document。这会对你有很大的帮助

答案 2 :(得分:0)

链接框架的最佳做法:

将框架添加到链接库列表中:'Project>>构建阶段>链接Binary与Libraries'

然后您可以使用尖括号来引用库:

#import <QuartzCore/QuartzCore.h>