本来不想说的,这其实是一个很基础的问题,但是这两天调试产品的bug的时候,却发现是assert使用不当的问题。当然问题代码不是我写的。
这个bug在debug版本里是不出现的,但是在release版里出现。原因就在于有一句很重要的函数调用被放在assert里面了。assert的愿意是检查这个函数调用的返回值。但是写代码的人却忽视了assert的副总用,结果导致release版里bug出现了。这个bug从重现到调试,花费了我3天时间。
此时正确合理的做法是使用verify、verify里的表达式在运行期也是可以执行的。因此没有了副作用。
切记切记。