_BSMachError while 运行 Stanford 的 CS193p Smashtag 应用程序
_BSMachError while running Stanford's CS193p Smashtag app
我从 course's site 下载了 Smasthag 演示应用程序。项目构建良好(在对 Twitter、TwitterRequest 等 类 进行小的更改后,因为我使用最新的 Xcode 7b4)并且在模拟器上运行良好(我还必须将 NSAppTransportSecurity
键添加到 info.plist
),但不在设备上 - 它不获取推文。我在 iPhone 6 with iOS 9 Public Beta 和 iPad 2 with iOS 8.4 上测试了它。此外,当应用程序在模拟器中为 运行 并且我将主题标签更改为搜索时,整个 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)
应用程序仍然运行良好,但这个错误让我很烦恼。我无法对 google 中的这个 _BSMachError 提出任何要求(只是一条孤独的印度尼西亚推文)。我也不明白为什么应用程序无法在设备上获取推文。
我遇到了同样的问题,因为我将键盘从系统键盘切换为自定义键盘keyboard.However它不会影响我的应用程序运行。
您需要将 NSAppTransportSecurity 添加为字典,作为第一个子项应该是一个名为 NSAllowsArbitraryLoads 的布尔值,设置为 YES。请注意,这会选择退出 NSAppTransportSecurity 功能。
在此处查看 App Transport Security 配置说明。请注意,如果您想完全退出,此文档是全新的并且其中有错误。错误是 NSAllowsArbitraryLoads 密钥未显示为 NSAppTransportSecurity 的直接子项。
理想情况下,您应该设置适当的白名单域和安全设置。
这似乎是 iOS 9 Beta 错误。它肯定与 UIKeyboard(系统一)的呈现和解雇有关。而且,它不会一直发生。
它无害,只是令人讨厌。该错误可能会在下一个测试版中得到解决,因为它位于核心系统对象中。
要解决此问题,您应该将语言环境设置为 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
}
}
}
在此之后,您的应用程序应该会加载并正确显示所有数据。
如果该控件中的任何组件有任何不透明属性,只需删除它并使用隐藏属性。
示例:
//invisibleTextView.alpha = 0.0f;
invisibleTextView.hidden = YES;
我从 course's site 下载了 Smasthag 演示应用程序。项目构建良好(在对 Twitter、TwitterRequest 等 类 进行小的更改后,因为我使用最新的 Xcode 7b4)并且在模拟器上运行良好(我还必须将 NSAppTransportSecurity
键添加到 info.plist
),但不在设备上 - 它不获取推文。我在 iPhone 6 with iOS 9 Public Beta 和 iPad 2 with iOS 8.4 上测试了它。此外,当应用程序在模拟器中为 运行 并且我将主题标签更改为搜索时,整个 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)
应用程序仍然运行良好,但这个错误让我很烦恼。我无法对 google 中的这个 _BSMachError 提出任何要求(只是一条孤独的印度尼西亚推文)。我也不明白为什么应用程序无法在设备上获取推文。
我遇到了同样的问题,因为我将键盘从系统键盘切换为自定义键盘keyboard.However它不会影响我的应用程序运行。
您需要将 NSAppTransportSecurity 添加为字典,作为第一个子项应该是一个名为 NSAllowsArbitraryLoads 的布尔值,设置为 YES。请注意,这会选择退出 NSAppTransportSecurity 功能。
在此处查看 App Transport Security 配置说明。请注意,如果您想完全退出,此文档是全新的并且其中有错误。错误是 NSAllowsArbitraryLoads 密钥未显示为 NSAppTransportSecurity 的直接子项。
理想情况下,您应该设置适当的白名单域和安全设置。
这似乎是 iOS 9 Beta 错误。它肯定与 UIKeyboard(系统一)的呈现和解雇有关。而且,它不会一直发生。
它无害,只是令人讨厌。该错误可能会在下一个测试版中得到解决,因为它位于核心系统对象中。
要解决此问题,您应该将语言环境设置为 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
}
}
}
在此之后,您的应用程序应该会加载并正确显示所有数据。
如果该控件中的任何组件有任何不透明属性,只需删除它并使用隐藏属性。
示例:
//invisibleTextView.alpha = 0.0f;
invisibleTextView.hidden = YES;