iOS 5分钟集成热修复(JSPatch)

前言

今天把公司项目的swift代码升级到Swift3,遇到了不少坑

现在总算能跑起来了..还有很多坑要踩…
这是改之前的惨状:

发现一条写一条,不定时更新

正题

  • 选了Later之后还想调用系统的自动升级[Edit > Convert > To Current Swift Syntax…]

  • 之前一个控件layoutIfNeed 会带动它所约束的控件一起layout,现在只会单独计算,想达到之前的效果只能整个父级控件调用layoutIfNeed方法了

  • swift取oc得NSDate回自动变成Data类型,一些操作NSDate的第三方库(如:DateTools)会崩溃

  • block的形参要加 “ _ “ 方法的第一个参数前也要加形参名

  • flatmap和map会返回一个非数组的类型,需要重新用一个返回[T]的方法重写一遍..语法都没有变,改了就好了

  • 控制台会输出一大堆网络日志,需要再Run里加一个OS_ACTIVITY_MODE = disable stackoverflow:http://stackoverflow.com/questions/37800790/hide-strange-unwanted-xcode-8-logs/39461256#39461256

  • Swift调用OC对象属性都自带Optional了,使用的时候要拆包

  • 升级Xcode之后想支持以前的插件可以在~/Library/Application Support/Developer/Shared/Xcode/Plug-ins路径下添加你现在的Xcode的UUID,查看你Xcode的UUID/Applications/Xcode.app/Contents

  • 上面方法还不行的看这个http://vongloo.me/2016/09/10/Make-Your-Xcode8-Great-Again/?utm_source=tuicool&utm_medium=referral
  • Xcode8打包的时候需要在Plist里为应用添加相应的权限配置(使用Xcode8上传成功后,商店里构建版本却没 http://gold.xitu.io/entry/57e117cca22b9d00612661bd/detail)

参考文章