【问题标题】:Best practice for adding a framework to Xcode向 Xcode 添加框架的最佳实践
【发布时间】:2013-07-20 00:32:10
【问题描述】:

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

应用以脆弱的方式引用框架,这可能会导致 在错误中。

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

'/Library/Frameworks/iTunesLibrary.framework'

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

@executable_path/@loader_path/@rpath/

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

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

  • dyld(1) 手册页

我已阅读建议的文档,但我不明白它们与我的项目有何关系。我正在尝试包含iTunesLibrary.framework,它似乎不是动态库。向项目添加非标准框架的最佳实践是什么?那条路径应该是绝对的吗?

【问题讨论】:

    标签: objective-c xcode app-store


    【解决方案1】:

    您的问题可能与框架最佳实践无关。而是因为 iTunes 库的怪异。

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

    然后库将无法加载并给你一个神秘的错误:

    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

    【讨论】:

      【解决方案2】:

      Go through this document .这对你有很大帮助

      【讨论】:

      • 我不完全确定要从中收集什么。 iTunesLibrary.framework 由 iTunes 11 安装在 /Library/Frameworks 中。如何将其包含在我的 Xcode 项目中,以免应用程序因上述原因而被拒绝?
      【解决方案3】:

      链接框架的最佳实践:

      将框架添加到链接库列表中:'Project >> Build Phases > Link Binary with Libraries'

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

      #import <QuartzCore/QuartzCore.h>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-15
        • 1970-01-01
        • 1970-01-01
        • 2010-09-14
        • 2013-06-06
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        相关资源
        最近更新 更多