ios – Swift 1.2与.lowercaseString崩溃

我有这个相对简单的方法来过滤tableView的数据源对象.

func filterCategoriesWithQuery(query: String) {

    placeCategoriesTableViewDataSource.filteredCategories
        = placeCategoriesTableViewDataSource.placeCategories.filter({ (category: JSON) -> Bool in

        let categoryName = (category["name"].stringValue).lowercaseString
        if categoryName.hasPrefix(query.lowercaseString)  {
            return true
        } else {
            return false
        }

    })

    genericTableView.reloadData()

在更新到Swift-1.2 / Xcode-6.3b之前,这非常有效,但现在当使用lowercaseString时它总是崩溃.看来lowercaseString方法一个bug?

使用NSZombieEnabled或者在malloc_free_break中断,我可以看到它与[CFString release]崩溃:发送到解除分配的实例的消息

难道我做错了什么?这是一个错误吗?任何解决方法

解决方法

这是Swift 1.2的第一个测试版中的一个错误.
在Apple开发者论坛上,Chris Lattner提到 a similar bug with uppercaseString应该在下一个测试版中修复.

在此之前,作为一种变通方法,您可以尝试在项目的构建设置中将Swift编译器优化更改为none.这帮助我解决了与Array相似的问题.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...