问题
release模式下打包app,发现app 中凡是使用懒加载的地方UIKit控件都不显示,但debug模式下正常
采用的懒加载声明方式:@property(nonatomic,weak) xxx
注意此处用的是weak方式懒加载,strong下不会出现比问题
原因
懒加载一般都是strong修饰,用strong修饰的话就不存在这个问题了,本文可直接跳过。
但也有小伙伴喜欢用weak修饰,这就需要在使用时注意了,也是本文写作的重点:如果是weak修饰,在创建对象的时候一定不要直接赋值,而应该先创建一个强引用对象,再将强引用对象赋值给weak,因为如果直接赋值,Realease模式下会立即释放,但Debug模式下因为延时释放,所以就出现了在Debug模式下UIKit控件存在,Release模式下控件不显示问题,因为Release模式下控件已经被释放了,下面这种写法是错误的:
错误写法解决方案
创建一个强引用对象,再将该对象赋值给weak
创建一个强引用对象 将强引用对象赋值给weak总结
开发过程中一般都是用Debug环境,因为它能输出很多测试信息,便于程序员调试,但正是上线的版本一般都是Release,因为它对App做了多方优化,也正是因为这样,在进行测试的时候一定要用Release版本,不仅因为这是将来用户直接接触的版本,而且可能会有意想不到的Bug发生。
网友评论