Tencent / QMUI_iOS

QMUI iOS——致力于提高项目 UI 开发效率的解决方案
http://qmuiteam.com/ios
Other
7.08k stars 1.38k forks source link

引入QMUI以后,present一个UINavigationController以后,再push到另一个vc,滑动返回会卡死 #1211

Open kingstarwmx opened 3 years ago

kingstarwmx commented 3 years ago

Bug 表现 之前提了这个bug,你们的管理员用xcode跑了下没重现,然后打上can't reproduce标签就没管了。这个感觉就是个kpi项目,这么明显的bug。我提供了两个工程,用的控制变量法,即引入QMUI和不引入,一个崩一个不崩。现在再提一下这个bug 1.引入QMUI以后,present一个UINavigationController以后,再push到另一个vc,操作几下,滑动返回会卡死(见gif),控制台打印 2021-03-11 14:29:53.403146+0800 NaviPopTest[1275:78586] Assertion failure in +[UINavigationController load], UINavigationController+QMUI.m:265 2021-03-11 14:29:53.406146+0800 NaviPopTest[1275:78586] Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'QMUI 认为 popViewController 会成功,但实际上失败了' First throw call stack: (0x186d5c878 0x19b2b2c50 0x186c62000 0x187ff391c 0x104ed2724 0x18902aaac 0x189029498 0x189250e54 0x18925a7b8 0x1892573f4 0x18925696c 0x18924aa98 0x189249e44 0x1897511b4 0x18972a4ec 0x1897b4488 0x1897b7440 0x1897ae8ec 0x186cd876c 0x186cd8668 0x186cd7960 0x186cd1a8c 0x186cd121c 0x19dd50784 0x18970a200 0x18970fa74 0x1049e5ea4 0x1869916c0) libc++abi.dylib: terminating with uncaught exception of type NSException Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'QMUI 认为 popViewController 会成功,但实际上失败了' terminating with uncaught exception of type NSException 2.如果用一样的代码不引入QMUI,按照gif那样操作是不会崩溃的,完全正常,我上传了两份完全一样的代码Test.zip,区别就是一个用cocoapods安装了QMUI(代码甚至不用导入qmui框架,啥都不做),另一份不引入,不引入的那个表现完全正常,pod安装的那个很容易就崩溃 3.我猜测是QMUI在hook系统方法的时候出了问题,以前就有这种预感,大量hook系统的方法好不安全

截图 如图所示,左右动两下, 上下动两下,就会崩溃,后面静止是因为已经崩了 2021-03-11 143122

如何重现 下载demo:Test.zip,运行NaviPopTest这个工程到真机上,按照gif截图的方式重复操作数次,不到半分钟必然会崩溃,并不是每次那样操作都会崩溃,要耐心点才可以重现。 其他信息

设备: iPhone XS Max iOS 版本: [iOS 14.2] Xcode 版本: [Xcode 12.4] QMUI 版本: [4.2.2]

MoLice commented 3 years ago

你们的管理员用xcode跑了下没重现,然后打上can't reproduce标签就没管了

所谓的开源项目就是业余时间维护的意思,如果是全职维护,那我必须通过这个项目得到应有的资金报酬,但现在你正在免费使用它。所有开源项目都是这样,没有人会保证一定在几个小时、几天内就响应你的诉求,这通常取决于维护人员当时有没有空,或者你提供的信息是否足够完整。 而这一点,我觉得是你的问题而不是我的问题,在一开始处理这个 issue 的时候我已经完完全全按照你说的条件去尝试复现,但是没有复现,于是这个 issue 就打了无法复现的标记然后排到后面再处理了。你说需要真机调试,那为什么你不在一开始的 issue 里就清楚描述出来呢?等你后面再补充,我已经去处理别的事情了,请明确我不是为你一个人服务的,你没有权力要求我在你需要的时间内解决完你的问题

这个感觉就是个kpi项目

如果你不放心,你可以不用这个框架,但请不要妄自下这种看起来很高高在上的评价,既然使用开源项目,就请尊重开源工作者的付出,否则你也可以选择不使用。

我提供了两个工程,用的控制变量法,即引入QMUI和不引入,一个崩一个不崩。

这是一个很好的习惯,正是因为你提供了 Demo,所以我才会那么快就响应你的 issue。但我使用你的 Demo 按照你当时的描述确实无法复现这个问题,这已经不是我的责任了吧?

以前就有这种预感,大量hook系统的方法好不安全

所有的技术都有利有弊,如果有什么技术写出来的代码一定没有 bug,洗耳恭听。QMUI 所有的实现方案都是经过权衡取舍后的结果,你可以拒绝所有的 hook,但同时也请接受复杂且不便利的使用方式。你可以对某个具体的功能做出你的评判,提出你认为更好的方式,或者指出其中的哪些代码为什么不妥,这样能为你赢得尊重。但像这种泛泛而谈的评论,不好意思,说实话它一点实际意义都没有。

kingstarwmx commented 3 years ago

你们的管理员用xcode跑了下没重现,然后打上can't reproduce标签就没管了

所谓的开源项目就是业余时间维护的意思,如果是全职维护,那我必须通过这个项目得到应有的资金报酬,但现在你正在免费使用它。所有开源项目都是这样,没有人会保证一定在几个小时、几天内就响应你的诉求,这通常取决于维护人员当时有没有空,或者你提供的信息是否足够完整。 而这一点,我觉得是你的问题而不是我的问题,在一开始处理这个 issue 的时候我已经完完全全按照你说的条件去尝试复现,但是没有复现,于是这个 issue 就打了无法复现的标记然后排到后面再处理了。你说需要真机调试,那为什么你不在一开始的 issue 里就清楚描述出来呢?等你后面再补充,我已经去处理别的事情了,请明确我不是为你一个人服务的,你没有权力要求我在你需要的时间内解决完你的问题

这个感觉就是个kpi项目

如果你不放心,你可以不用这个框架,但请不要妄自下这种看起来很高高在上的评价,既然使用开源项目,就请尊重开源工作者的付出,否则你也可以选择不使用。

我提供了两个工程,用的控制变量法,即引入QMUI和不引入,一个崩一个不崩。

这是一个很好的习惯,正是因为你提供了 Demo,所以我才会那么快就响应你的 issue。但我使用你的 Demo 按照你当时的描述确实无法复现这个问题,这已经不是我的责任了吧?

以前就有这种预感,大量hook系统的方法好不安全

所有的技术都有利有弊,如果有什么技术写出来的代码一定没有 bug,洗耳恭听。QMUI 所有的实现方案都是经过权衡取舍后的结果,你可以拒绝所有的 hook,但同时也请接受复杂且不便利的使用方式。你可以对某个具体的功能做出你的评判,提出你认为更好的方式,或者指出其中的哪些代码为什么不妥,这样能为你赢得尊重。但像这种泛泛而谈的评论,不好意思,说实话它一点实际意义都没有。

而这一点,我觉得是你的问题而不是我的问题,在一开始处理这个 issue 的时候我已经完完全全按照你说的条件去尝试复现,但是没有复现,于是这个 issue 就打了无法复现的标记然后排到后面再处理了。你说需要真机调试,那为什么你不在一开始的 issue 里就清楚描述出来呢? 一开始截图地方时候这个东西就是真机啊,而且我按照你们的模板提供了 设备: iPhone XS Max iOS 版本: [iOS 14.2] 这样的信息,也是在说是真机啊,确实我可能不知道模拟器不太好重现,但是我至少完完全全提供了所需要知道的一切信息。

除了这个,我感觉你说的还是很有道理的,有理有据令人信服,大佬

retX0 commented 3 years ago

什么是开源

开源一词最初是指开源软件(OSS)。开源软件是源代码可以任意获取的计算机软件,任何人都能查看、修改和分发他们认为合适的代码。

代码已经开源了,有问题你也可以自己查看源码进行bug的修正,提出 PR, 而不是向别人提出问题,等待着别人给你解决。当然,如果你付费另说。

fanyuecheng commented 3 years ago

这肯定不是KPI项目 1.从QMUI 1.0版本,我就开始用在项目里了,算起来也有好几年了,直到现在到4.2.3我依旧在用,它也依旧在更新。 2.QMUI4.2.2的时候我曾看过微信读书ipa包,用的是最新的QMUI4.2.2。 QMUI并不完美,我提过很多bug。但是不能否认QMUI给我省了很多力气,很多东西拿来就用,老爽了。不过最近更新的是慢了,但是情有可原。 🐂🍺