本人在上个月开发完成了一个用Swift开发的App,最近升级完Xcode7和手机升级到iOS9.0.2后,程序崩溃,出现更多错误。目前仍有部分从App Store上下载的应用,在iOS9系统下出现闪退的情况,那么我估计这些应用也都是用Swift写的。下面来分析这个问题并解决一下。
【一】因为Xcode7中的Swift版本不同于Xcode6.4中Swift中的SDK,Xcode7中的Swift主要改变的就是语法问题,也就是一个强制类型转换。在Xcode6.4中,下列代码是能够编译通过的:
var cellcell = UITableView() let cell = self.***TableView.dequeueReusableCellWithIdentifier("***") as! UITableViewCell cell.textLabel?.text = "Hello World" cellcell = cell
var cellcell = UITableView() let cell = self.***TableView.dequeueReusableCellWithIdentifier("***") cell!.textLabel?.text = "Hello World" cellcell = cell!
问题的关键就是使用as进行强制类型转换引起的。其中从最初的Swift到目前这个版本,Swift一直在改动很多回的就是这个模块。我们去找一些更早的Swift代码,现在去编译一下,大多出现的也是as类型转换出现的错误,当然也有optional可选型的问题。optional是Swift的特点,也比较难理解,需要大家好好琢磨。
【二】 然后还会导致不能编译通过的问题是引入第三方OC库的问题。由于我的项目中使用了第三方的SDK,并且在Build Phases-->Link Binary With Libraries中引入了很多的*.framework,*.dylib,*.a等等库文件。然后编译会出现如下错误:
You must rebuild it with bitcode enable(Xcode setting ENABLE_BITCODE).
解决方案请看博文:http://blog.csdn.net/zhyl8157121/article/details/48528831 。
【三】最后编译没有问题了,但是运行的时候会出现一个问题,就是无法访问网络数据,出现如下提示:
#warning:获取app配置信息失败:The resource could not be loaded because the App Transport Security
解决方案请看博文:http://bbs.feng.com/read-htm-tid-9619460.html 。
我经过一晚上的折腾以后,好久不见的App终于又在手机上愉快的跑起来了。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!