在升级完Xcode7和iOS 9之后,不加修改直接先run一次app,console会打印两种错误:
<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
第一个错误:根据爆栈网帖子显示,怀疑是一个iOS9下的bug,对app运行貌似没有明显的影响,但是在控制台会不断输出,所以理论上应该消除掉。修复的做法是在info.plist里将键值UIViewControllerBasedStatusBarAppearance删掉即可。
第二个错误:这个错误会直接导致app无法运行,因为请求失败无法获取数据。修复方法毋庸置疑,是需要把所有http请求修改为https的。根据Apple doc里说的,所有应用要尽快采用ATS安全机制来更新应用(You should adopt ATS as soon as possible, regardless of whether you’re creating a new app or updating an existing one.);但是如果请求的back end暂未使用TLS封装API,则可以在info.plist里做出标记,即增加键值对:
<key>NSAppTransportSecurity</key>
<dict><key>NSAllowsArbitraryLoads</key><true/></dict>