运行斯坦福的CS193p Smashtag应用程序时_BSMachError

时间:2015-07-23 11:47:52

标签: ios swift cs193p

我从course's site下载了Smasthag演示应用。项目构建正常(在Twitter,TwitterRequest等类的小变化之后,因为我使用最新的Xcode 7b4)并且在模拟器上工作正常(我还必须将NSAppTransportSecurity键添加到info.plist),但不是在设备上 - 它不会提取推文。我在带有iOS 9 Public Beta的iPhone 6和带有iOS 8.4的iPad 2上进行了测试。此外,当app在模拟器中运行并且我更改了hashtag以进行搜索时,整个tableView会重新加载新的推文,但在控制台中我得到了这个:

2015-07-23 03:24:15.560 Smashtag[25991:4344251] _BSMachError: (os/kern) invalid capability (20)
2015-07-23 03:24:15.560 Smashtag[25991:4344251] _BSMachError: (os/kern) invalid name (15)

应用程序仍然运行良好,但此错误让我感到困扰。我对谷歌中的这个_BSMachError一无所知(只有一条孤独的印尼语推文)。我不知道为什么app不能在设备上获取推文。

5 个答案:

答案 0 :(得分:8)

这似乎是一个iOS 9 Beta错误。它肯定与UIKeyboard(系统一)的呈现和解雇有关。而且,它并没有一直发生。

它无害,只是烦人。该错误可能会在下一个测试版中解决,因为它位于核心系统对象中。

答案 1 :(得分:5)

您需要将NSAppTransportSecurity添加为字典,并且第一个子节点应该是名为NSAllowsArbitraryLoads的bool设置为YES。请注意,这会选择NSAppTransportSecurity功能。

enter image description here

请在此处查看App Transport Security配置说明。请注意,如果您想完全退出,则此文档是全新的,并且包含错​​误。错误是NSAllowsArbitraryLoads键未显示为​​NSAppTransportSecurity的直接子项。

理想情况下,您应该设置相应的列入白名单的域和安全设置。

https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html

答案 2 :(得分:5)

要解决此问题,您应将区域设置设置为en_US。

将Tweet.swift中的私有扩展名asTwitterDate更改为以下内容以修复非en_US设备上的问题。

...
private extension String {
  var asTwitterDate: NSDate? {
    get {
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "EEE MMM dd HH:mm:ss Z yyyy"
        dateFormatter.locale = NSLocale(localeIdentifier: "en_US")
        let createdAt = dateFormatter.dateFromString(self)
        return createdAt
    }
  }
}

在此之后,您的应用程序应加载并正确显示所有数据。

答案 3 :(得分:0)

我遇到了同样的问题,因为我将键盘从系统键盘切换到自定义键盘。但是它不会影响我的应用程序运行。

答案 4 :(得分:0)

如果该控件中的任何组件有任何opaque属性,只需删除它并使用隐藏属性。

示例:

//invisibleTextView.alpha = 0.0f;
invisibleTextView.hidden = YES;