为了账号安全,请及时绑定邮箱和手机立即绑定

iOS之踩过的坑

标签:
Android iOS

坑一

我们知道,在Xcode里,如果两个文件重名,编译的时候会报一个 2 duplicate symbols的错误,但是如果是两个分类重名呢,会报错吗(不在同一个文件夹下)?答案是:不会

我在实际项目中遇到了这样一个闪退的问题,控制台报错如下:

An instance 0x7fef5c023400 of class UITextView was deallocated while key value observers were still registered with it

控制台打印

最后定位原因是因为项目中导入了两个UITextView+Placeholder.h的分类。

于是我新建了一个新项目,新建两个文件夹,分别导入两个分类,UITextView+Placeholder.hUIView+Extension.h,测试结果表明,UIView+Extension.h分类重复导入不会崩溃,而UITextView+Placeholder.h会。

文件目录

因为UITextView+Placeholder.h中使用了KVO。

坑二

项目打包发布前一定要在release模式下测试一遍,Release是发行版本,比Debug版本有一些优化,文件比Debug文件小 ;Debug是调试版本,Debug和Release调用两个不同的底层库。尤其是使用weakself时,在debug模式下很可能没问题,Release模式下就crash了!


修改运行模式

修改运行模式

坑三

同一个页面内如果有两个collectionview,一定要分别初始化两个collectionViewLayout,两个collectionview 使用一个collectionViewLayout就会crash!

坑四

项目名 does not have an architecture that 设备名 can execute.

这个问题主要是因为项目设置的ARM指令集,比设备指令集高,也就是项目没有兼容低版本设备的指令集导致的。所以需要我们设置更低的指令集来兼容低版本设备,这个设备版本不是iOS系统版本,而是硬件的版本,例如iPhone5、iPhone6这样的设备。


ARM指令集



作者:檀羽冲
链接:https://www.jianshu.com/p/aa0aaebf8dda


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消