禁用模块时使用@import

ali*_*aei 42 import xcode module ios

我有个问题

@import Foundation;
Run Code Online (Sandbox Code Playgroud)

我看到:
@import vs #import - iOS 7

我将"启用模块"设置为"是"

我的问题没有解决

Pet*_*ann 72

每当我尝试添加@import SafariServices;语句时,我都会在零快速项目中收到此警告.

解决方案: 启用模块.转到Target> Build Settings并将Enable Modules(C和Objective-C模块)设置为YES.

我已经圈出了Build Settings切换以进行更改.

  • 令我惊讶的是,这并没有解决我的问题.然后,在我确定这是正确的想法用完之后,我重新启动了Xcode(9.2)然后它完全正常工作.叹. (4认同)

Ale*_* N. 31

可能的原因是您使用Objective-C++.然后,尽管正确的构建设置,模块仍会被禁用

  • 我注意到这个问题是由将框架(使用 @import Foundation)导入到 .mm 文件引起的 (2认同)
  • 我正在使用 Obj-C++,并面临同样的问题。我该怎么办? (2认同)

Uda*_*n K 9

检查您是否使用#import "ProductName-Swift.h".mm文件中的某个位置或除objc文件之外的任何其他文件.

因为如果在cpp文件中使用此导入,则会自动禁用模块.


War*_*ger 6

我一直在混合ObjC,ObjC ++,C ++和Metal。每当我收到“禁用模块时使用@import”时,我都会尝试替换:

@import Name; 
Run Code Online (Sandbox Code Playgroud)

与:

#import "Name/Name.h"
Run Code Online (Sandbox Code Playgroud)

例如,替换为:

@import Metal;
@import MetalKit;
@import CoreVideo;
Run Code Online (Sandbox Code Playgroud)

与:

#import "Metal/Metal.h"
#import "MetalKit/MetalKit.h"
#import "CoreVideo/CoreVideo.h"
Run Code Online (Sandbox Code Playgroud)

它似乎有效。

  • 谢谢!通过将 `@import GoogleMobileAds;` 替换为 `#import "GoogleMobileAds/GADBannerView.h"` 也对我有用 (2认同)