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、内存等都不同,对未初始化的属性赋值自然不同(使用不当可能会导致内存泄露)
②对局部变量需要进行初始化!!