在我的项目中,我有一个Action扩展,它在我的主项目中使用了一个类。然后,该类使用从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说明未定义的符号。
答案 0 :(得分:0)
我已经手动设置了扩展程序的依赖项,并且很容易忘记您已经完成的工作,如果您需要更改依赖的pod,则很难重现您的工作或做出其他一些结构性改变。
相反,在您的Podfile中,您可以设置明确希望pod与之链接的目标:
link_with 'App Name', 'Extension Name'
之后列出的每个吊舱都将应用于两个目标。
或者,如果您的目标具有不同的依赖关系,则可以仅为其中一个目标添加容器(并且仍然保留常用容器而不指定目标):
target :'Extension Name' do
pod 'somepod'
end
我遇到的唯一问题是cocoapods为每个目标创建一个单独的xcscheme,但是将两个目标设置为仅使用其中一个方案。我不得不手动切换扩展使用的方案。我回家时会用屏幕截图更新。