1、第三方库的坑:首先项目采用的pod集成方式,先是常规报错:
Module compiled with Swift 5.2.2 cannot be imported by the Swift 5.3 ,这个错基本升级xcode必出,所以直接更新对应的库就好了。命令执行完以为万事大吉了,发现报了个新的错:
Building for iOS Simulator, but the linked framework '******.framework' was built for iOS.一顿操作之后,发现是x12开始模拟器用arm架构了,库针对模拟器的编译出来还是x86的。所以我们需要去工程里设置设置一下:
Target→Build Settings→VALID_ARCHS 添加x86_64就可以了。
当很多字符串拼接起来会报错:The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions。这时候我们需要把这个写法拆分就好了,拆到不报错为止~~
3、最大的坑来了~~~项目使用carthage的伙伴们:
更新x12首先肯定也会遇到Module compiled with Swift 5.2.2 cannot be imported by the Swift 5.3 ,然后按照以往的经验,我们肯定还是直接去carthage update。还是按照以往的经验,那我们肯定是万事大吉啊,最多更新几个api的用法而已啦。但是这次我蒙了,还是报错,这次错误没留截图,总之一顿操作之后。。。。emmmm。。还是没解决,最后去逛github的carthage源码,找到了问题的答案。直接放上连接https://github.com/Carthage/Carthage/issues/3019,大概的意思就是carthage的环境需要再去配置一下,具体操作上面也写的很清楚。
这里再给小白们解释一下,第一要创建一个脚本文件,把图上的代码复制进去。第二把脚本文件放入工程目录中,如图:
最后运行下脚本文件(运行之前一定要chmod +x一下脚本文件,就是给他可执行的权限)。就ok啦~
4、今天分享一个UIPickerView的坑~原项目有一些需求需要吧PickerView的背景色改掉,之前的方法是这样的:[[pickerView.subviews objectAtIndex:1] setHidden:YES];
[[pickerView.subviews objectAtIndex:2] setHidden:YES];
所以这属于系统级别的问题了,我们只能区分版本来搞定了,加个版本判断吧~
[[pickerView.subviews objectAtIndex:1] setHidden:TRUE];
if (@available(iOS 14.0, *)) {
}else{
[[pickerView.subviews objectAtIndex:2] setHidden:TRUE];
}
所以可以理解为UIPickerView由原来的三层结构变为了两层结构,而少的那一层应该是2(背景)层、3(最下面有一条横线)层的合并。