iOS10和Xcode8的GM版放出后,iOS10适配工作就非常重要了。Xcode8下完打开项目后就陆续碰到了一些坑,本文对此这些坑做一些记录。

无法打开的xib和storyboard

由于同事们还在Xcode7.3上开发,然而你用Xcode8打开xib或storyboard后,会弹出一个选择机型的框,如果想要用Xcode8改xib或storyboard,就必须choose

然而你choose后,同事用7.3去打开这个xib或者storyboard你会发现,打不开了,这不是逗比了吗?

不过也可以通过source code去删除掉版本限制,不过建议还是不要这样做。

控制台的疯狂

控制台输出不相关信息

跑起项目后发现控制台在疯狂输出,根本无法看到自己的打印输出

需要EditScheme -> 左侧Run -> 右侧Arguments -> 下方Environment Variables -> 添加 OS_ACTIVITY_MODE = disable

真机调试打印显示不全(2016.10.24补充)

这几天调试时发现,使用Xcode8+iOS10调试时,首先是真机输出打印不输出,后面发现是因为上面设置的OS_ACTIVITY_MODE = disable影响到了打印输出,取消这个设置后后虽然能打印了。

但是又出现一个新问题:在iOS10真机调试打印请求回调的json居然截断了(显示不全),但是Xcode8+iOS9却正常,经过一番查询,解决办法是在pch里用printf重新定义一下NSLog。

具体代码如下:

#define NSLog(format, ...) \\
do { \\
printf("\\n<%s : %d : %s>-: %s", \\
[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], \\
__LINE__, \\
__FUNCTION__, \\
[[NSString stringWithFormat:format, ##__VA_ARGS__] UTF8String]); \\
} while(0)
#else
#define NSLog(format, ...) do{ } while(0)