ITPub博客

首页 > IT职业 > IT图书 > iOS之踩过的坑

iOS之踩过的坑

IT图书 作者:eyile 时间:2021-09-09 09:18:48 0 删除 编辑

坑一

我们知道,在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.h和UIView+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


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4506/viewspace-2809423/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-10-17

  • 博文量
    76
  • 访问量
    540