文章目录
  1. 1. Xcode8打开永远崩溃
  2. 2. 编译卡住不动了
  3. 3. Swift3优化不完整的代码bug
  4. 4. Swift3 extension的坑

ps:Xcode8出来两个星期,手贱忍不住升级了,抱着对swift3强烈的期望升级了,升级了,升级,升……然后雪崩一场。

Xcode8打开永远崩溃

刚升级的xcode8每次打开输入第一个字符就崩溃,一直如此从来没有改变。错误信息显示imagenamed插件问题,菜单栏并没有插件显示,强行自我淡定了下,在xcode插件目录找到了残留的插件尸体。
~/Library/Application Support/Developer/Shared/Xcode/Plug-ins
删除后终于能正常打开了。

编译卡住不动了

好醉,说好的优化了性能呢,代码转换后各种错误,然后编译找错误提示,再编译再来一批,打完N波僵尸后,系统编译到某个文件卡住永远不动了,关键是也不报错。听着笔记本可怜的轰隆隆声,心好碎。

网上找了N多资料,终于发现蛛丝马迹。

网上有说再以前的版本,有遇到xml字符串太长造成编译卡住问题。
仔细研究代码发现,原来是一个fmdb的sql语句问题,字段太多,insert语句太长,然后xcode就卡住了,卡住了,卡住,了……一口老血。

解决方法,不能使用fmdb自带的update方法,因为赋值参数太多了,会卡住,所以只能拼装成一个完整的sql,然后把老长老长的sql用StringBuilder包装起来,分割成无数份。

好吧,终于编译通过了。

Swift3优化不完整的代码bug

UITableView在ios开发中使用频率应该是很高的,swift3对UITableView的几个代理方法做了写法上的优化,比如

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell

原来的写法cellForRowAt对应的是cellForRowAtIndexPath,少了多余的IndexPath,完美,看起来简化多了。批量替换下呗。

编译好后一看高度什么鬼,点击为什么没效果。然而编译也没报错。还原回去才发现 didSelectRowAtIndexPath 在xcode8中后面的IndexPath必须有,没有这个代理就不会被调用。也是吐血一升。

Swift3 extension的坑

我不知道extension文档里面有没有说过不能放override的方法,不然这个方法在release下面是不会被调用的。然而为什么在debug模式下override的方法又会被调用。这个只能说坑到家了。好不容易把代码打包半天提交到Itunesconnect, testflight下来一看剧情不一样。

🐱了个咪,为什么编译看起来一点问题都没有。只能用release模式调试,一步一步判断才发现这个问题。

附上对应release设置的图片:Screen shot

文章目录
  1. 1. Xcode8打开永远崩溃
  2. 2. 编译卡住不动了
  3. 3. Swift3优化不完整的代码bug
  4. 4. Swift3 extension的坑