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里面添加一项来搞定它.
NSAppTransportSecurity
NSAllowsArbitraryLoads
4.新字体导致UI问题
新苹方字体个人很喜欢,小字体时观看对眼睛更友好,但是字体间距好像比以前稍微宽了一丢丢,导致UI出现了一丢丢问题,稍微注意一下Label宽度即可.
5.键盘闪现bug
应用内无缘无故弹出数字键盘,不知道哪里出问题了,stackoverflow查询之后发现是UIAlertview的问题,需要改为iOS8添加的UIAlertController,(iOS8新特性---更优雅的弹窗),但是由于应用还要支持iOS7,这个问题不了了之,暂且记下.
6. canOpenUrl机制改变导致无法跳转应用
iOS9之后处于对用户隐私的考虑,对使用URLScheme跳转做了限制,只需要在info.plist里面LSApplicationQueriesSchemes
字段下添加相应的UrlScheme即可正常跳转,白名单上限是50个.
常见白名单
LSApplicationQueriesSchemes
wechat
weixin
sinaweibohd
sinaweibo
sinaweibosso
weibosdk
weibosdk2.5
mqqapi
mqq
mqqOpensdkSSoLogin
mqqconnect
mqqopensdkdataline
mqqopensdkgrouptribeshare
mqqopensdkfriend
mqqopensdkapi
mqqopensdkapiV2
mqqopensdkapiV3
mqzoneopensdk
wtloginmqq
wtloginmqq2
mqqwpa
mqzone
mqzonev2
mqzoneshare
wtloginqzone
mqzonewx
mqzoneopensdkapiV2
mqzoneopensdkapi19
mqzoneopensdkapi
mqzoneopensdk
alipay
alipayshare
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......