项目遇到的问题

一、包体大小不一致问题?

iOS正确查看ipa包大小方式:
以查看App Store的正式包为例:

一、打开http://ios.meitu-int.com/ipa/mtxx/queue

image.png

二、Mac OS下查看:选中下载好的ipa包->右键->显示简介->大小
image.png

三、Windows下:选中下载好的ipa包->右键->属性->大小
image.png

切记:查看包大小以实物(下载ipa)大小为准(即:上图红框内的为准)

二、Xcode12和Xcode12.1适配的问题?

对于屏幕适配遵循了历史代码的适配方式:使用UIScreen.main.currentMode获取手机的物理像素判断不同的机型进行适配。

问题出现的原因:以iPhone12 Pro Max为例来说,
Xcode12 打包时iPhone12 Pro Max 取出的物理像素为1242* 2688px(这个是iPhone11 Pro Max的物理像素)
Xcode12.1 打包时iPhone12 Pro Max 取出的物理像素为1284* 2778px(这个才是iPhone12 Pro Max的真实物理像素)
1242* 2688px是做过适配的展示高度为348pt
1284* 2778px未做过适配展示高度使用了默认的254pt,故显示过低。
同理iPhone12 Pro未做过适配展示高度使用了默认的254pt

解决方案:增加对新机型iPhone12 Pro、iPhone12 Pro Max的做屏幕适配(Xcode12.1)

三、账号退出后,商业化sdk还能获取到uid?

分析:账号退出,各个sdk再去获取用户信息应该是nil,这才是正常的流程。
因此分别去商业sdk、大账号sdk初始化位置看了一眼,发现都有注册observer来接受logout的通知,但是商业sdk初始化早于大账号sdk初始化,这样的话退出账号时商业sdk会先得到通知,然而商业化sdk内部在接受到退出登录的通知后还有一个获取uid的操作,这不就有问题了么。
结果这么一分析,问题就清晰了。observer的存储结构实际上是一个单向链表。一个结构体 Observation 包含了一个observer(观察者)、selector(该观察者需要执行的方法) 、以及指向下一个节点的指针。Observation就是一个node。在接受通知的时候也是从头节点开始,经过next指针找到下一个node,顺序处理事件的。

解决方案:调整两个任务的初始化顺序,保证AccountTask早于BusinessTask即可。

你可能感兴趣的:(项目遇到的问题)