iOS 开发中遇到的坑

1 view的错误

用代码创建了一个view后能显示,但无法响应触摸事件
出错原因:可能是父view的frame为CGZero

2 cocoapods的更新

使用cocoapods更新库时,使用pod install无效。
出错原因:命令被墙 。
解决方法:pod install 换成pod install - -verbose - -no-repo-update这个命令

3 个人经验

mvc很重要!界面尽量用代码写!这样能保证关于界面样式相关的操作能封装在一个view中,而controller则集中于数据的处理操作。

4 关于MJRefresh

MJRefresh上拉/下拉刷新时,在xib/storyboard中不显示刷新控件
解放方法:

tableview.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headRefresh)];
tableview.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footRefresh)];

5 关于真机调试证书

【这次开发的过程是用了个人(XCode7后免费)、企业证书】
项目–>Team(此处用于选择证书用户)
①一般选择用户后会出现证书不匹配的问题,此时用fix解决即可。
②证书的profile配置的选择一般可以用com.XXX.*,这样就不必针对特定项目进行重新创建了。
③在Build Settings 里Code Siging Identiy里的Provisiong Profile选择Automatic即可。

6 特定设备出现的闪退问题

有时遇到的一些问题是只有特别设备才会出现的。

案例1
环境:
设备:macbook Pro 2015年版(13寸、8G+256闪存)
系统:macOS Sierra 10.12.2
XCode:8.2.1

情况:
使用UIEdgeInsets时并没有初始化,直接拿去使用。
导致出现如下问题:
{2.2847091420365001e-314, -20, 6.953210555402684e-310, nan}
其中nan显然是下溢。模拟器上导致并非一个数字,因此赋值时会崩溃。但在其它设备中并不会出现这种情况。

解决方法:
对UIEdgeInsets进行初始化
eg. UIEdgeInsets edgeInset = UIEdgeInsetsZero;

教训:
①每个设备的CPU、内存等都不同,对未初始化的属性赋值自然不同(使用不当可能会导致内存泄露)
②对局部变量需要进行初始化!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值