我有一个非常简单的框架项目MyFramework,可以成功构建。该框架定义了一个单一的全局函数myFunction。 该框架还定义了2个全局变量:MyFrameworkVersionNumber和MyFrameworkVersionString(这两个变量是由Xcode为我创建的)
我有一个非常简单的应用程序项目MyApplication。我通过将框架包(即通过构建框架生成的DerivedData中的MyFramework.framework)拖放到Xcode Navigator上,然后在项目的General的Embedded Binaries部分中选择框架,将框架添加到应用程序项目中标签
如果我向MyApplication添加引用变量MyFrameworkVersionNumber的代码,那么我就能够成功构建并运行MyApplication。
如果我向MyApplication添加引用myFunction函数的代码,那么我就无法构建MyApplication。
首次更新
我突然想起迦太基完全按照我要做的去做。所以,我用迦太基来构建MyFramework和Voila! - 我可以将框架的Carthage构建拖放到应用程序项目中并成功使用它。所以现在我的调查已成为:迦太基知道我不知道什么?
答案 0 :(得分:0)
哦天啊!事实证明这很简单。 MyFramework正在为通用iOS设备(arm64架构)构建。 MyApplication是为模拟器(x86_64架构)构建的。一旦我匹配这两个一切都很好。迦太基构建运作良好的原因是它产生了一个通用二进制文件(即包含两种架构的二进制文件)。
我仍然不明白为什么无论架构如何都能访问MyFrameworkVersionNumber全局变量。但我可以将这个小小的谜团推迟到时间的优点中揭示出来的一些神秘信息(也许就像它在两个架构的结构相同的标题中一样)。