4

我试图弄清楚如何在 macOS Sierra 上编译这段代码。

#import <Foundation/Foundation.h>

int main() {
    NSLog(@"Hello World");
    return 0;
}

在 El Capitan 上,我可以使用这个命令进行编译。

clang -x objective-c -framework Foundation main.m

但是,当我在 Sierra 上尝试该命令时,我看到了这些错误。

In file included from main.m:1:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:10:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/NSArray.h:5:
/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:44:12: error: unknown property attribute 'class'
@property (class, readonly) BOOL supportsSecureCoding;

这是clang我正在使用的版本。

$ clang -v
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin16.0.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

我安装了 Xcode 版本 7.3.1 (7D1014) 和 Xcode 版本 8.0 beta 4 (8S188o)。我拥有的 Sierra 版本是 10.12 beta (16A254g)。

注意:我想在终端中编译它clang,而不是在 Xcode 中。

4

2 回答 2

7

确保您选择了 Xcode 8 版本的命令行工具。

在此处输入图像描述

于 2016-08-02T02:16:13.300 回答
-1

Objective-C 在新版本的 Clang 和 Xcode 中获得了对类属性的支持。您可以在此处找到一些有用信息的文章:Objective-C 类属性

要解决这个问题,您只需安装 Xcode 8。

UPD

忘了说:

安装后确保您已将命令行工具切换到最新的 Xcode:

$ clang --version
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
$ xcode-select -print-path
/Applications/Xcode.app/Contents/Developer
$ sudo xcode-select -switch /Applications/Xcode-beta.app/Contents/Developer/
$ xcode-select -print-path
/Applications/Xcode-beta.app/Contents/Developer
$ clang --version
Apple LLVM version 8.0.0 (clang-800.0.33.1)
Target: x86_64-apple-darwin15.5.0
Thread model: posix
InstalledDir: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
于 2016-08-01T19:20:54.377 回答