iOS 那些坑你遇到了么?(后期持续更新~ ~)

来源:互联网 发布:软件评测师报考 编辑:程序博客网 时间:2024/05/29 09:53
1、限制UITextField输入长度,一次输入大于限制长度的内容时无法输入,解决办法:

通过在代理方法中截取强制赋值。






2、tableViewCell在初始化的时候宽高默认是320*44.只有在布局的时候才会调整到设置的高度。
解决方法:重写layoutSubviews方法。在layoutSubviews里面重新设置其frame即可。

3、alertview关闭影响了系统其他的动画导致的。要么延迟调用,要么自己做一个alertview。


4、编译时报大量的错误,都是基本数据类型找不到,则可能是该文件头文件未导入。



5、在自定义cell上加了某些东西后 无法获取点击事件

解决办法:

(1)检查是不是控件的用户可交互性(userInteractionEnabled)是否打开,包括子视图和父视图。

(2)检测子视图frame是否超出了父视图范围,可在运行时加断点,查看层级关系,点击Xcode中层级按钮 ,或者设置父视图的layer.masksToBounds = YES,看你点击的部分是不是在父视图范围之外。


(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,重新运行,控制台会输出导致内存泄漏的代码。


如果你遇到了其他问题,可留言,我会更新到文档里,共勉~~

阅读全文
0 0
原创粉丝点击