命令因信号而失败:分段错误:11 编译错误
Command failed due to signal: Segmentation fault: 11 compile error
我花了很多时间尝试自己解决这个问题,并且已经仔细检查了 SO 上的可用答案,但出现了同样的错误。所以这是我已经排除的可能原因的清单:
- 如 here 所示,框架没有问题。我创建了另一个具有相同框架集的项目,一切正常
- 否 issue with SwiftyJSON,在测试项目中也能正常工作
- 代码中没有突出显示的编译问题
- 我使用比较工具检查了两个不同的
project.pbxproj
文件(来自我的原始项目和新的测试项目),以发现项目设置中的一些差异,都是一样的
- 我也比较了两个项目的构建命令选项,都是一样的
当我转到 Report Navigator 并查找每个未成功编译的文件时,我发现了一些奇怪的相关性:任何使用 NSString
的 API 的文件都无法编译编译。为了证明这个假设,我找到了一些编译成功的文件,并在其中添加了以下代码行
let abc = NSString(string: "abc")
然后这个文件也停止编译。
所以对于一些文件,它说用 as NSString
转换 String
class 对象是无效的,在某些地方 NSAttributedString
/NSString
创建失败,在某些地方其他调用 compare
或 rangeOfString
的地方不正确等。但是当我将导致 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>
,我的错误已立即解决。
很高兴能帮到你!!
我花了很多时间尝试自己解决这个问题,并且已经仔细检查了 SO 上的可用答案,但出现了同样的错误。所以这是我已经排除的可能原因的清单:
- 如 here 所示,框架没有问题。我创建了另一个具有相同框架集的项目,一切正常
- 否 issue with SwiftyJSON,在测试项目中也能正常工作
- 代码中没有突出显示的编译问题
- 我使用比较工具检查了两个不同的
project.pbxproj
文件(来自我的原始项目和新的测试项目),以发现项目设置中的一些差异,都是一样的 - 我也比较了两个项目的构建命令选项,都是一样的
当我转到 Report Navigator 并查找每个未成功编译的文件时,我发现了一些奇怪的相关性:任何使用 NSString
的 API 的文件都无法编译编译。为了证明这个假设,我找到了一些编译成功的文件,并在其中添加了以下代码行
let abc = NSString(string: "abc")
然后这个文件也停止编译。
所以对于一些文件,它说用 as NSString
转换 String
class 对象是无效的,在某些地方 NSAttributedString
/NSString
创建失败,在某些地方其他调用 compare
或 rangeOfString
的地方不正确等。但是当我将导致 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;
(或者如果您的项目中不需要它,只需将其删除), 那应该可以解决问题。
我在项目中也遇到过同样的问题。 UIImage
的 类别 class。
这个错误的原因: 据我判断,编译器与一些位代码混淆并且无法显示确切原因。所以它抛出以下消息:
Command failed due to signal: Segmentation fault:11
我的解决方案:
我刚刚在我的类别 class 头文件中导入 #import <UIKit/UIKit.h>
,我的错误已立即解决。
很高兴能帮到你!!