iOS 那些坑你遇到了么?(后期持续更新~ ~)
通过在代理方法中截取强制赋值。
2、tableViewCell在初始化的时候宽高默认是320*44.只有在布局的时候才会调整到设置的高度。
解决方法:重写layoutSubviews方法。在layoutSubviews里面重新设置其frame即可。
3、alertview关闭影响了系统其他的动画导致的。要么延迟调用,要么自己做一个alertview。
4、编译时报大量的错误,都是基本数据类型找不到,则可能是该文件头文件未导入。
5、在自定义cell上加了某些东西后 无法获取点击事件
解决办法:
(1)检查是不是控件的用户可交互性(userInteractionEnabled)是否打开,包括子视图和父视图。
(2)检测子视图frame是否超出了父视图范围,可在运行时加断点,查看层级关系,点击Xcode中层级按钮(3)在cell上加一个与cell相同尺寸的透明view试试。
6、尽量不要在dealloc方法中出现self,此方法中self不稳定,可能胡导致crash。
7、当UICollectionview每行cell的个数大于1时,UICollectionviewLayout的itemSize,宽度根据屏幕适配时要用floor函数向下取整,否则出现意想不到的效果。
(1)如图:
(2)在iPhone 5S和iPhone 6上效果分别如下图:
(3)使用floor()函数对itemWidth处理,如下图:
(4)处理后在iPhone 5S上的效果如下:(iPhone 6效果不变)
8、因为模态(Modal)导致导航错乱的问题
设置情景: 在ViewControllerA中隐藏导航,模态弹出ViewControllerB,Push出ViewControllerC等其他界面均需要显示导航,初步想法是在ViewControllerA的viewWillDisappear中显示导航,但是导致的效果是B、C等界面在出现的过程中A中的导航已经显示出来,这不是我想要的效果。
导致这样的原因是方法的执行时机不同,这里是先执行A的viewWillDisappear,才会执行B、C的viewWillAppear。暂时的解决办法就是将显示导航的操作放在B、C的viewWillAppear中。
更多模态(Modal)相关知识点击这里:iOS模态(Modal)
9、终止定时器要在viewWillDisappear里,不能再dealloc里,否则self释放不掉,dealloc永远不会执行。
10、内存泄漏导致崩溃,控制台只标识lldb,没有任何报错,排查方法:
Product — > Scheme —> Edit Scheme —> Run — > Diagnostics —> 勾选 Zombie Objects,重新运行,控制台会输出导致内存泄漏的代码。
如果你遇到了其他问题,可留言,我会更新到文档里,共勉~~