首页 文章

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

提问于
浏览
6

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

  • 框架没有问题,如here所示 . 我创建了另一个具有相同框架集的项目,一切都很好

  • issue with SwiftyJSON,在测试项目中也可以正常工作

  • 代码中未突出显示编译问题

  • 我使用比较工具查看了两个不同的 project.pbxproj 文件(来自我原来的项目和新测试项目),找到项目设置中的一些差异,都是一样的

  • 我还比较了两个项目的构建命令选项,并且都是相同的

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

let abc = NSString(string: "abc")

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

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

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

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

UPD

我上传了无法编译的项目到GitHub

2 回答

  • 0

    在项目的"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编译器崩溃 . 只有在Swift代码中的某处引用 NSString 时才会发生这种情况 . (无论输入多么糟糕,编译器都不应该崩溃,因此我建议在Apple提交错误报告) .

    您可以将方法重命名为

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

    (或者只是在项目中不需要它时将其删除),这应该可以解决问题 .

  • 1

    我的项目也遇到了同样的问题 .
    See my screen shot
    My scenario: 找到下面的方案,我在其中发现了这个错误 . 我在我的快速项目中使用了我的Objective-C代码 . 2.基本上它是我在代码中使用的 categoryUIImage .

    Reason of this bug: 据我所知,编译器与某些代码混淆并且无法显示确切的原因 . 所以它抛出以下消息:

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

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

    Happy to help you!!

相关问题