模块被禁用 - 但为什么?

时间:2015-12-26 19:00:07

标签: ios module ios8 cocoapods xcode7

我在项目中使用模块。在我使用@import的地方,当模块被禁用时,我得到“使用'@import'”。但为什么他们被禁用?

  • 在我的构建设置中,我为所有目标设置为“启用模块(C和Objective-C)”。
  • 将“自动链接框架”设置为“是”或“否”不会影响此(编译时)错误
  • 虽然该项目曾经有过Objective-C ++和一些C ++代码,但现在已不复存在了。是否有任何我可以错过的项目设置因为这个设置?
  • 项目中没有.pch文件,构建设置没有提及
  • 我使用CocoaPods(0.39.0)和“use_frameworks!”我希望@import的模块来自那里。但是,如果我用'@import Foundation'替换'#import'或'#import',就会发生同样的错误。和'@import UIKit',所以我希望这不相关
  • 该项目来自iOS7之前的版本,因此我可能错过了默认设置的设置
  • 该项目需要iOS 8并针对iOS 9.2进行构建。

我意识到加载第三方模块可能会减慢应用加载时间。我正在使用use_frameworks转换为CocoaPods!所以我可以衡量多少。如果它不是太糟糕,我想使用,因为我打算将代码库的多个快速部分移动到他们自己的框架中(作为开源coocapods)

我认为这与SO上的其他问题没有重复,因为我已经找到了我发现的那些(非常感谢this one),接着链接,重新观看{{3 ,并阅读苹果论坛上的相关帖子,所以我相信我已完成了我的作业。 : - )

2 个答案:

答案 0 :(得分:1)

在我的项目中,我有一个桥接头从ObjC桥接到Swift,并且有一个生成的头文件可以从Swift桥接到ObjC。事实证明,如果桥接头引用了实现文件引用从Swift到ObjC的桥文件的头,则禁用模块支持。所以要小心你在桥接文件中放入的内容,并在导入生成的-Swift.h文件时要小心。

答案 1 :(得分:0)

首先转到终端并输入xcode-select -p。它应该说,/Applications/Xcode.app/Contents/Developer。如果没有,请键入sudo xcode-select -s /Applications/Xcode.app并按Enter键并输入您的密码。

如果不能解决问题,请尝试删除项目的派生数据目录。转到“项目”视图并删除项目的派生数据。然后清理您的构建文件夹(command-shift-K)。运行Analyze(命令转换-B)并解决蓝色和黄色的任何问题。

现在如果@import仍无法正常工作,请创建一个全新的XCode项目。验证@import是否正常工作。如果没有,那么你的XCode安装可能搞砸了,或者你的硬盘正在死机。删除XCode并重新下载,看看是否有效。重新启动恢复分区,看看是否有一些磁盘问题(不太可能,但是嘿)。

如果@import在新项目中有效,请尝试从当前项目中获取所有项目并将其复制到新项目中。确保您拥有最新版本的cocoapods,然后将您的pod安装到新项目中。

如果所有这些都没有解决问题,你可能会在某处留下一个@end语句或者丢失了} ...