美文网首页
项目遇到的问题

项目遇到的问题

作者: AndyYaWei | 来源:发表于2021-03-03 16:42 被阅读0次

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

    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即可。

    相关文章

      网友评论

          本文标题:项目遇到的问题

          本文链接:https://www.haomeiwen.com/subject/vhlmwktx.html