_BSMachError XCode 7 测试版

_BSMachError XCode 7 Beta

当我使用 Swift2 运行 我在 Xcode7 中的代码时,在通过推送 segue 呈现视图控制器后,我收到以下错误:

_BSMachError: (os/kern) invalid capability (20)
_BSMachError: (os/kern) invalid name (15)

其他SO文章没有解决,有谁知道这个问题吗?

虽然这个问题似乎作为一个错误持续存在并且可能会被修复,但它源于 App Transport Security 已在 iOS 9 中实现。

如果您的应用程序从网络服务器中提取数据,以便填充您将要呈现的视图控制器,您可以解决这些错误 通过 verifying/granting 访问您从中提取的特定站点。

为了解决这个问题,您需要将以下内容添加到应用的 .plist 文件中:

  • 您可能需要更改 ATS 异常词典 以满足您的需要

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>testdomain.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <false/>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <false/>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <true/>
                <key>NSExceptionMinimumTLSVersion</key>
                <string>TLSv1.2</string>
                <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
                <false/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <true/>
                <key>NSThirdPartyExceptionMinimumTLSVersion</key>
                <string>TLSv1.2</string>
                <key>NSRequiresCertificateTransparency</key>
                <false/>
            </dict>
        </dict>
    </dict>
    

可以找到此解决方案的更多详细信息 or here App Transport Security 的 Apple 文档也值得一读。

我有两条相同的错误消息。就我而言,当用户在打开的 UIAlertController 中选择一个按钮后,我调用 [[UIApplication sharedApplication] openURL:url] 时出现错误。我假设警报试图在我试图打开 URL 的同时关闭。所以,我稍微延迟了一下,错误消息就消失了。

dispatch_after(0.2, dispatch_get_main_queue(), ^{
    [[UIApplication sharedApplication] openURL:url];
});

不确定这是否有助于解决您的特定问题,但我认为分享可能会有所帮助。

我在使用键盘时遇到了这些错误。根据 Apple Docs 中的注释,这在某种程度上是意料之中的。

http://cocoadocs.org/docsets/Keyboard/0.3.0/

将 info.plist 中的 Localization native development region key 从 en 更改为 United States

我就是这样做的

 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { () -> Void in
        AnswersDataServerEntity.saveSingleDocoment(doc)
    }

过早关闭视图控制器可能会导致这种情况。

[self dismissViewControllerAnimated:YES completion:NULL]; 
//<do something..>

这会引发 _BSMachErrors

//<do something..>
[self dismissViewControllerAnimated:YES completion:NULL]; 

现在,_BSMachError 消失了。

在 IBAction 按钮下方添加此语句是导致问题的原因。

self.view.endEditing(true)

问题已在 Swift 3 中解决,方法是注释掉上面的行并以不同的方式处理结束编辑,或者也可以在 IBAction 下的所有其他代码之后添加上面的行来解决。

我在调试时遇到了这个问题,当我在响应视图大小更改时删除断点后问题就消失了。