命令因信号而失败:分段错误:11 编译错误

Command failed due to signal: Segmentation fault: 11 compile error

我花了很多时间尝试自己解决这个问题,并且已经仔细检查了 SO 上的可用答案,但出现了同样的错误。所以这是我已经排除的可能原因的清单:

  1. here 所示,框架没有问题。我创建了另一个具有相同框架集的项目,一切正常
  2. issue with SwiftyJSON,在测试项目中也能正常工作
  3. 代码中没有突出显示的编译问题
  4. 我使用比较工具检查了两个不同的 project.pbxproj 文件(来自我的原始项目和新的测试项目),以发现项目设置中的一些差异,都是一样的
  5. 我也比较了两个项目的构建命令选项,都是一样的

当我转到 Report Navigator 并查找每个未成功编译的文件时,我发现了一些奇怪的相关性:任何使用 NSString 的 API 的文件都无法编译编译。为了证明这个假设,我找到了一些编译成功的文件,并在其中添加了以下代码行

let abc = NSString(string: "abc")

然后这个文件也停止编译。

所以对于一些文件,它说用 as NSString 转换 String class 对象是无效的,在某些地方 NSAttributedString/NSString 创建失败,在某些地方其他调用 comparerangeOfString 的地方不正确等。但是当我将导致 Segmentation fault 错误的所有代码复制粘贴到我的新项目时,它们编译成功

当然,就在一天前,该项目使用 Xcode 6 编译得很好

我不知道从这里去哪里以及如何解决这些问题,任何帮助都会非常有用

UPD

我上传的项目没有编译到 GitHub

在您项目的 "MYHelpers.h/.m" 中(大概来自 https://github.com/AlexandrGraschenkov/MYHelpers) 定义了具有一些实用方法的 NSString 类别:

#pragma mark - NSString+Utils

@interface NSString (Utils)
- (NSString *)trim; // trim whitespace characters with new line
- (NSString *):(NSString *)appendString;
- (NSURL *)toURL;
- (NSString *)URLEncodedString;
- (NSString *)URLDecodedString;
- (NSString *)lightURLEncodeString;
+ (BOOL)emailValidate:(NSString *)email;
- (CGSize)sizeForStringWithFont:(UIFont *)font constrainedToSize:(CGSize)size;
- (id)JSON;
@end

第二种方法

- (NSString *):(NSString *)appendString;

有一个空的选择器名称。这在 Objective-C 中是允许的, 你可以用

调用方法
NSString *foobar = [@"foo" :@"bar"];

(我不知道这个方法是不是故意用空定义的 选择器名称——我不推荐它。)

但它会导致 Swift 编译器崩溃 。仅当 NSString 时才会发生这种情况 在 Swift 代码的某处被引用。 (编译器永远不应该崩溃,不管输入是多么的畸形, 所以我建议向 Apple 提交错误报告。

您可以将方法重命名为

- (NSString *)appendString:(NSString *)appendString;

(或者如果您的项目中不需要它,只需将其删除), 那应该可以解决问题。

我在项目中也遇到过同样的问题。 我的场景: 在下面找到我最后发现此错误的场景。 1. 我在我的 swift 项目中使用我的 objective- C 代码。 2. 基本上这是我在代码中使用的 UIImage 类别 class。

这个错误的原因: 据我判断,编译器与一些位代码混淆并且无法显示确切原因。所以它抛出以下消息:

Command failed due to signal: Segmentation fault:11

我的解决方案: 我刚刚在我的类别 class 头文件中导入 #import <UIKit/UIKit.h>,我的错误已立即解决。

很高兴能帮到你!!