Xcode7正式版发布之后,我们团队第一时间进行了升级体验,在确定没有重大bug之后,全体升级Xcode7,世界如此美好~~~
但是升级之后还是遇到一些问题,把踩的坑小记一下.
1.Swift2.0语法更新之后编译不通过.
当初为了学习中,我们项目中某个模块使用swift实现,现在想来这绝逼是最2的事情了,Xcode6以来,每次更新都随着语法的变动,每次看到编译后一堆红色警告都是心烦意乱.对应解决办法不难,修改代码即可.
2. Bitcode导致编译不通过问题
在修改完swift代码之后,编辑报错如下:
xxx does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target.
Xcode7之后,默认开启Bitcode,但是引用的第三方库不支持啊,AppThinning始终是个美好的愿景啊,暂时可以通过修改Build settings - Build Options - Enable Bitcode 改为NO
来解决.
3.Http request fail
iOS9之后默认只支持更安全的HTTPS请求,我们公司暂时不支持HTTPS,我们可以来到info.plist里面添加一项来搞定它.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
4.新字体导致UI问题
新苹方字体个人很喜欢,小字体时观看对眼睛更友好,但是字体间距好像比以前稍微宽了一丢丢,导致UI出现了一丢丢问题,稍微注意一下Label宽度即可.
5.键盘闪现bug
应用内无缘无故弹出数字键盘,不知道哪里出问题了,stackoverflow查询之后发现是UIAlertview的问题,需要改为iOS8添加的UIAlertController,(iOS8新特性---更优雅的弹窗),但是由于应用还要支持iOS7,这个问题不了了之,暂且记下.
6. canOpenUrl机制改变导致无法跳转应用
iOS9之后处于对用户隐私的考虑,对使用URLScheme跳转做了限制,只需要在info.plist里面LSApplicationQueriesSchemes
字段下添加相应的UrlScheme即可正常跳转,白名单上限是50个.
常见白名单
<key>LSApplicationQueriesSchemes</key>
<array>
<!-- 微信 URL Scheme 白名单-->
<string>wechat</string>
<string>weixin</string>
<!-- 新浪微博 URL Scheme 白名单-->
<string>sinaweibohd</string>
<string>sinaweibo</string>
<string>sinaweibosso</string>
<string>weibosdk</string>
<string>weibosdk2.5</string>
<!-- QQ、Qzone URL Scheme 白名单-->
<string>mqqapi</string>
<string>mqq</string>
<string>mqqOpensdkSSoLogin</string>
<string>mqqconnect</string>
<string>mqqopensdkdataline</string>
<string>mqqopensdkgrouptribeshare</string>
<string>mqqopensdkfriend</string>
<string>mqqopensdkapi</string>
<string>mqqopensdkapiV2</string>
<string>mqqopensdkapiV3</string>
<string>mqzoneopensdk</string>
<string>wtloginmqq</string>
<string>wtloginmqq2</string>
<string>mqqwpa</string>
<string>mqzone</string>
<string>mqzonev2</string>
<string>mqzoneshare</string>
<string>wtloginqzone</string>
<string>mqzonewx</string>
<string>mqzoneopensdkapiV2</string>
<string>mqzoneopensdkapi19</string>
<string>mqzoneopensdkapi</string>
<string>mqzoneopensdk</string>
<!-- 支付宝 URL Scheme 白名单-->
<string>alipay</string>
<string>alipayshare</string>
</array>
PS:哪位仁兄应用里面添加了50个url scheme让我来膜拜一下
7.约束leading与training导致的崩溃
iOS9以前leading
与training
基本可以理解为left
与right
,但是iOS9之后不是了,貌似说增加了某些国家文字支持,是从右往左导致leading
与training
与left
跟right相反了(求证实),我在使用Masonry
添加约束的时候已经全用left
于right
替换.
8.preferredLanguages导致应用默认为英文的bug
哈哈哈哈更新iOS9之后微信跟微博第一时间中枪了.....
嗯嗯,严肃.
iOS9正式版之后[NSLocale preferredLanguages]
返回的当前语言后面加了所在国家后缀,比如中国地zh-Hans
变成了zh-Hans-CN
,这时候使用返回值的前缀做国际化适配即可.
例如if ([currentLanguage hasPrefix:@"zh-Hans"])
差不多就酱,遇到啥新问题再记下来_
每次升级都是一堆坑,求一家最低支持iOS9设备的公司Orz......