模块被禁用 - 但为什么呢?
Modules are disabled - but why?
我正在为项目中的模块而苦苦挣扎。在我使用@import 的地方,我得到 "Use of '@import' when modules are disabled"。但是为什么他们被禁用了?
- 在我的构建设置中,我将所有目标的 "Enable modules (C and Objective-C)" 设置为是。
- 将 "Link Frameworks Automatically" 设置为是或否不会影响此(编译时)错误
- 虽然该项目曾经有 Objective-C++ 和一些 C++ 代码,但现在没有了。是否有任何我可能错过的项目设置因此而设置?
- 我的项目中没有更多的 .pch 文件,构建设置也没有提到它们
- 我将 CocoaPods (0.39.0) 与 "use_frameworks!" 一起使用,我希望@import 的模块来自那里。但是,如果我将“#import”或“#import”替换为“@import Foundation;”,则会发生同样的错误。和“@import UIKit”,所以我认为这不相关
- 该项目来自iOS7之前的项目,所以我可能错过了一个默认设置
- 该项目需要 iOS 8 并针对 iOS 9.2 构建。
我意识到加载第三方模块可能会减慢应用程序的加载时间。我正在使用 use_frameworks 转换为 CocoaPods!这样我就可以衡量多少。如果不是太糟糕,我想使用,因为我计划将代码库的多个 swift-only 部分移动到它们自己的框架中(作为开源 coocapods)
我相信这不是关于 SO 的其他问题的重复,因为我已经完成了我发现的问题(非常感谢 this one), followed the links, re-watched WWDC'13 session 404,并阅读了苹果论坛上的相关帖子,所以我相信我已经完成了功课。:-)
首先到终端输入xcode-select -p
。它应该说,/Applications/Xcode.app/Contents/Developer
。如果没有,则键入 sudo xcode-select -s /Applications/Xcode.app
并按回车键并输入您的密码。
如果这不能解决问题,请尝试删除项目的派生数据目录。转到项目视图并删除项目的派生数据。然后清理您的构建文件夹 (command-shift-K)。 运行 分析 (command-shift-B) 并解决蓝色和黄色的任何问题。
现在,如果@import 仍然不起作用,请创建一个全新的XCode 项目。验证 @import 是否在其中工作。如果没有,那么您的 XCode 安装可能搞砸了,或者您的 HDD 快死了。删除 XCode 和 re-download 它,看看是否有效。重新启动到恢复分区,看看您是否有一些磁盘问题(不太可能,但是嘿)。
如果@import 在新项目中有效,请尝试从当前项目中取出所有内容并将它们复制到新项目中。确保您拥有最新版本的 cocoapods,然后将 pods 全新安装到新项目中。
如果所有这些都不能解决问题,您可能在某处遗漏了 @end 语句或缺少 } ...
在我的项目中,我有一个桥接 header 从 ObjC 桥接到 Swift,并且有一个生成的 header 文件从 Swift 桥接到 ObjC。事实证明,如果桥接 header 引用了 headers,其中实现文件引用了从 Swift 到 ObjC 的桥接文件,模块支持将被禁用。因此,请注意您在桥接文件中放置的内容,并注意何时导入生成的 -Swift.h 文件。
我正在为项目中的模块而苦苦挣扎。在我使用@import 的地方,我得到 "Use of '@import' when modules are disabled"。但是为什么他们被禁用了?
- 在我的构建设置中,我将所有目标的 "Enable modules (C and Objective-C)" 设置为是。
- 将 "Link Frameworks Automatically" 设置为是或否不会影响此(编译时)错误
- 虽然该项目曾经有 Objective-C++ 和一些 C++ 代码,但现在没有了。是否有任何我可能错过的项目设置因此而设置?
- 我的项目中没有更多的 .pch 文件,构建设置也没有提到它们
- 我将 CocoaPods (0.39.0) 与 "use_frameworks!" 一起使用,我希望@import 的模块来自那里。但是,如果我将“#import”或“#import”替换为“@import Foundation;”,则会发生同样的错误。和“@import UIKit”,所以我认为这不相关
- 该项目来自iOS7之前的项目,所以我可能错过了一个默认设置
- 该项目需要 iOS 8 并针对 iOS 9.2 构建。
我意识到加载第三方模块可能会减慢应用程序的加载时间。我正在使用 use_frameworks 转换为 CocoaPods!这样我就可以衡量多少。如果不是太糟糕,我想使用,因为我计划将代码库的多个 swift-only 部分移动到它们自己的框架中(作为开源 coocapods)
我相信这不是关于 SO 的其他问题的重复,因为我已经完成了我发现的问题(非常感谢 this one), followed the links, re-watched WWDC'13 session 404,并阅读了苹果论坛上的相关帖子,所以我相信我已经完成了功课。:-)
首先到终端输入xcode-select -p
。它应该说,/Applications/Xcode.app/Contents/Developer
。如果没有,则键入 sudo xcode-select -s /Applications/Xcode.app
并按回车键并输入您的密码。
如果这不能解决问题,请尝试删除项目的派生数据目录。转到项目视图并删除项目的派生数据。然后清理您的构建文件夹 (command-shift-K)。 运行 分析 (command-shift-B) 并解决蓝色和黄色的任何问题。
现在,如果@import 仍然不起作用,请创建一个全新的XCode 项目。验证 @import 是否在其中工作。如果没有,那么您的 XCode 安装可能搞砸了,或者您的 HDD 快死了。删除 XCode 和 re-download 它,看看是否有效。重新启动到恢复分区,看看您是否有一些磁盘问题(不太可能,但是嘿)。
如果@import 在新项目中有效,请尝试从当前项目中取出所有内容并将它们复制到新项目中。确保您拥有最新版本的 cocoapods,然后将 pods 全新安装到新项目中。
如果所有这些都不能解决问题,您可能在某处遗漏了 @end 语句或缺少 } ...
在我的项目中,我有一个桥接 header 从 ObjC 桥接到 Swift,并且有一个生成的 header 文件从 Swift 桥接到 ObjC。事实证明,如果桥接 header 引用了 headers,其中实现文件引用了从 Swift 到 ObjC 的桥接文件,模块支持将被禁用。因此,请注意您在桥接文件中放置的内容,并注意何时导入生成的 -Swift.h 文件。