iOS App Extension 看不到主项目的类

Posted

技术标签:

【中文标题】iOS App Extension 看不到主项目的类【英文标题】:iOS App Extension does not see class of main project 【发布时间】:2015-03-11 17:48:49 【问题描述】:

在我的项目中,我有一个 Action 扩展,它在我的主项目中使用了一个类。然后该类使用从 pod 安装的类,特别是 .我在将扩展自动链接到 pod 时遇到了问题,但通过选择扩展目标、常规选项卡并将每个 pod 添加到链接框架和库来手动完成。

现在我看到了:

ld: warning: directory not found for option '-L/Users/apfritts/Box/Pencils/build/Debug-iphoneos'
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_User", referenced from:
      objc-class-ref in ActionViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

看起来我的构建目标是 64 位(arm64、arm7、arm7s),所以我不确定为什么它显示 x86_64 的未定义符号。

【问题讨论】:

【参考方案1】:

我一直在手动设置扩展的依赖关系,很容易忘记你所做的事情,如果你需要更改你依赖的 pod 或进行一些其他结构更改,那么很难重现你的工作。

相反,您可以在 Podfile 中设置明确希望 pod 链接的目标:

link_with 'App Name', 'Extension Name'

您之后列出的每个 pod 都将应用于这两个目标。

或者,如果您的目标具有不同的依赖关系,您可以只为其中一个目标添加 pod(仍然保留公共 pod 而不指定目标):

target :'Extension Name' do
  pod 'somepod'
end

我遇到的唯一问题是 cocoapods 为每个目标创建了一个单独的 xcscheme,但将两个目标都设置为仅使用其中一个方案。我不得不手动切换扩展使用的方案。回家后我会更新截图。

【讨论】:

以上是关于iOS App Extension 看不到主项目的类的主要内容,如果未能解决你的问题,请参考以下文章

在引用的项目中获取主项目的版本

iOS开发 之 App Extension 整体总结

IOS 扩展 (Extension)

在 Xcode 中看不到 App Extension 选项?

iOS扩展Extension之Today

iOS App Extension入门