_BS机器错误 XCode 7 Beta

59

我在Xcode7中使用Swift2运行代码时,通过Push Segue方式呈现视图控制器后,出现以下错误:

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

其他的SO文章都没有解决办法,有人知道这个问题吗?


同样的问题...在viewDidDisappear中设置断点后,我第一次明白了。 - DiogoNeves
我也是,在Xcode 7.0 (7A220)中使用Objc。 - PatrickV
同样的问题,在Xcode 7 GM上遇到了。 - xta
我在Xcode 7中使用Objective-C也遇到了同样的警告。该如何解决? - Hardik Shekhat
1
当我旋转我的iPhone 6 iOS 9.2时,我在版本7.2(非测试版)中遇到了这个问题。屏幕上有两个webView,并且在出现错误时没有使用网络。我的webViews似乎绘制得不够快,虽然这并不明显,但是我有一些测量各种事物的Javascript,在发生此错误的同时报告不正确的结果。 - narco
显示剩余6条评论
8个回答

21

虽然这个问题似乎是一个错误并且很可能会被修复,但它源于在iOS 9中实现的新的应用程序传输安全(App Transport Security)

如果您的应用程序从Web服务器获取数据以填充即将呈现的视图控制器,您可以通过验证/授权访问特定网站来解决这些错误

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

  • 您可能需要修改您的ATS例外字典(ATS Exception Dictionary)以适应您的需求

<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>

可以在这里这里找到有关此解决方案的更多详细信息。 阅读苹果公司有关App Transport Security的文档也是值得的。


8
我制作了一个简单的测试应用程序,没有任何网络活动,但仍然出现这个错误。似乎与核心布局功能有关。你的回答似乎不相关。 - NKorotkov
2
@NKorotkov,错误可能来自多种情况,请参考Mark L的答案。 - mattgabor

17

我遇到了相同的两个错误消息。在我的情况下,当用户在打开 UIAlertController 中选择按钮后,调用 [[UIApplication sharedApplication] openURL:url] 时出现了错误。我假设警报试图在我尝试打开网址的同时关闭。因此,我引入了一个轻微的延迟,错误消息就消失了。

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

不确定这是否有助于你的具体问题,但我认为分享一下可能会有所帮助。


这个对我解决了问题。我正在使用documentInteractionController显示PDF,并添加延迟使错误消失了。谢谢! - jroyce

3

提前解散视图控制器可能会导致这种情况发生。

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

这会抛出_BSMachErrors错误。
//<do something..>
[self dismissViewControllerAnimated:YES completion:NULL]; 

现在,_BSMachError已经消失了。

3

将您的info.plist文件中的本地化开发区域键从en更改为United States。


或英国 :) - jenson-button-event

2

我这样做

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

2

3
我认为这不是苹果的文档,而是第三方的文档。 - NYC Tech Engineer
是的,这是使用 CocoaDocs 生成的,它看起来类似于苹果的文档,但是由用户生成。它是关于 Bell App Lab 设计的特定应用程序的参考。 - mattgabor

0
在IBAction按钮下面放置这个语句导致了问题。
self.view.endEditing(true)

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

0

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


欢迎来到StackOverflow!为了以后的参考,请尝试在评论区发布类似这样的附加问题,因为这并不是一个解决方案。谢谢。 - cdomination

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接