由于信号命令失败:分段错误:11编译错误

Aza*_*zat 6 segmentation-fault ios swift xcode7

我花了很多时间尝试自己解决这个问题,并且已经在SO上检查了可用的答案并且出现了同样的错误.所以这里列出了我已经从可能的原因中排除的东西:

  1. 指示与框架没有问题在这里.我创建了另一个具有相同框架集的项目,一切都很好
  2. 没有SwiftyJSON的问题,在测试项目中也可以正常工作
  3. 代码中没有突出显示编译问题
  4. project.pbxproj使用比较工具浏览了两个不同的文件(来自我的原始项目和新测试项目),以找到项目设置中的一些差异,都是一样的
  5. 我还比较了两个项目的构建命令选项,并且都是相同的

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

let abc = NSString(string: "abc")
Run Code Online (Sandbox Code Playgroud)

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

因此,对于某些文件,它说铸造String类对象as NSString是无效的,某处NSAttributedString/ NSString创建失败,在某些其他地方调用comparerangeOfString不正确等等.但是当我复制粘贴导致Segmentation fault错误的所有代码片段到我的新项目时,他们编译顺利

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

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

UPD

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

Mar*_*n R 1

在项目的“MYHelpers.h/.m”中(大概来自https://github.com/AlexandrGraschenkov/MYHelpers)\naNSString定义了一些实用方法的类别:

\n\n
#pragma mark - NSString+Utils\n\n@interface NSString (Utils)\n- (NSString *)trim; // trim whitespace characters with new line\n- (NSString *):(NSString *)appendString;\n- (NSURL *)toURL;\n- (NSString *)URLEncodedString;\n- (NSString *)URLDecodedString;\n- (NSString *)lightURLEncodeString;\n+ (BOOL)emailValidate:(NSString *)email;\n- (CGSize)sizeForStringWithFont:(UIFont *)font constrainedToSize:(CGSize)size;\n- (id)JSON;\n@end\n
Run Code Online (Sandbox Code Playgroud)\n\n

第二种方法

\n\n
- (NSString *):(NSString *)appendString;\n
Run Code Online (Sandbox Code Playgroud)\n\n

有一个空的选择器名称。Objective-C 中允许这样做,\n您可以使用以下命令调用该方法

\n\n
NSString *foobar = [@"foo" :@"bar"];\n
Run Code Online (Sandbox Code Playgroud)\n\n

(我不知道该方法是否是故意使用空选择器名称 \xe2\x80\x93 定义的,我不推荐它。)

\n\n

但它会导致Swift 编译器崩溃。仅当NSString在 Swift 代码中的某处引用时才会发生这种情况。\n(无论输入的格式多么错误,编译器都不应崩溃,\n因此我建议向 Apple 提交错误报告)。

\n\n

您可以将该方法重命名为

\n\n
- (NSString *)appendString:(NSString *)appendString;\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n