iOS开发-做项目中遇到的坑
来源:互联网 发布:诺蒂菲尔编程软件 编辑:程序博客网 时间:2024/05/29 09:21
最近项目中遇到的问题和实际的解决方案的分享,还有一款小插件的分享,希望对遇到同类问题的作者有所帮助。
问题一
使用WebView
加载网页时候进行加载时候,如果出现网络请求缓慢,并且使用MBProgressHub
进行动画处理,会出现以下情形:
情形一:使用[MBProgressHub showMessage:""]
- 使用这个方法你会出现这个情况
这样的话用户无法操作,只能杀死程序重新开启程序,用户体验极差
情形二:使用[MBProgressHub showMessage:@"" toView:self.view]
这样体验较情形一较好,用户可以使用返回键返回,体验也不是很好
针对这个问题首先想到的是WebView
有没有个属性可以提供我设置超时请求,找了一遍没有,那么WebView
load 是一个request
,那么肯定有设置请求超时的操作,果然发现以下方法
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:_webViewUrl] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:5.0];
在webView
的代理方法中
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{ NSLog(@"%@",error.userInfo); [MBProgressHUD hideHudWithMessageError:error.userInfo[@"NSLocalizedDescription"]]; [MBProgressHUD hideHUDForView:_webView];}
这样的就处理webView
中的超时请求
问题二
定时器NSTimer
使用出现的问题:在做获取验证码操作时候倒计时出现负数,原因未能正确处理定时器造成。
-(void)setUpTimer{ self.timeLable.text = @"119s"; self.sendBtn.hidden = YES; self.timeLable.hidden = NO; self.timeIndex = 119; //设置定时器 self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(elapsedTimer) userInfo:nil repeats:YES];//这句代码非常重要,否则会造成未知的错误 [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode];}//执行倒数器-(void)elapsedTimer{ self.timeIndex = self.timeIndex - 1; if (self.timeIndex < 0) { self.timeLable.hidden = YES; self.sendBtn.hidden = NO; [self timerEndRunning]; }else { self.timeLable.text =[NSString stringWithFormat:@"%ds",self.timeIndex]; }}// 结束倒数器- (void)timerEndRunning{ if (self.timer != nil) { [self.timer invalidate]; self.timer = nil; }}
在处理发送验证码按钮发送后显示暗色有两种方法,第一种将按钮设置为不能点击然后将按钮的背景色设置为灰色,第二种是创建按钮的时候设置图片的UIControlStateDisabled
下的图片,以上两种的都可以。
你以为上面定时器就处理完成了吗?当你销毁界面的时候,你会发现delloc
并未调用,实际上当控制器出栈的时候,并未销毁,什么原因呢,原因是你在发送验证码倒计时过程的定时器并未销毁和停止!!!
所以正确的逻辑应该是:
- (void)viewDidDisappear{ if(self.timer != nil) [self.timer valide]; self.timer = nil;}
记得一定先valide
再nil。
问题三
给大家分享一个模拟低网速的插件,其实苹果官方已经给我们提供了这样的插件,我们去苹果官网下载就可以了
具体地址见下图:
这个地址是需要账号登录的,没有的伙伴申请一个即可。
点开后
这样就可以在模拟器上模拟相应的网络状态了。再不用担心,做项目的时候遇到关于网络的测试了。
1 0
- iOS开发-做项目中遇到的坑
- 项目开发中遇到的坑
- IOS开发中遇到的坑
- iOS 开发中遇到的坑
- iOS开发中遇到的那些坑
- iOS开发中遇到过的坑
- iOS开发中遇到过的坑
- iOS开发中遇到过的坑
- iOS开发中遇到过的坑
- iOS开发中遇到过的坑
- iOS开发中遇到过的坑
- iOS开发中遇到过的坑
- 做项目过程中遇到的那些坑
- 做项目过程中遇到的问题
- iOS 项目中遇到的警告
- iOS 开发过程中遇到的那些奇葩的坑
- 使用Unity开发项目中遇到的坑~~
- 使用vue cli开发项目中遇到的坑
- c++作业6
- dump json 显示中文问题
- Linux下基于v4l2框架的图像采集
- JMX
- Java WebService 简单实例
- iOS开发-做项目中遇到的坑
- ftp协议
- zabbix监控for myql5.6.24
- Swift-类型转换
- 隐语义模型(LFM)
- 牟长青:论新媒体创业,团队的重要性
- iOS Video Streaming(收集,整理)
- Ethernet frame
- Intersection of Two Arrays