问题:如不雅就如许运行的话,就会报错.
报错原因:固然膳绫擎在创建子线程中已经写了一句self.thread = thread包管子线程不会被释放,然则因为没有开启runloop轮回,那么子线程其实是处于逝世亡状况,所以当在点击让子线程持续工作的话就会报错.
解决办法:创建子线程的RunLoop,让子线程一向在运行,然后经由过程设置在办法琅绫擎的调用其它的须要子线程工作的办法,让子线程去工作
- #pragma mark - 工作在线程中的义务
- - (void)task
- {
- NSLog(@"1------%@",[NSThread currentThread]);
- //创建RunLoop
- NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
- //创建timer(这种办法须要手动设置模式)
- NSTimer *timer = [NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(timeRun) userInfo:nil repeats:YES];
- //
- // //添加到runloop中,并设置模式
- [runLoop addTimer:timer forMode:NSDefaultRunLoopMode];
- // [runLoop addPort:[NSPort port] forMode:NSDefaultRunLoopMode];
- //开启runloop
- [runLoop run];
- NSLog(@"%s-------2-----%@",__func__,[NSThread currentThread]);
- }
- [runLoop addPort:[NSPort port] forMode:NSDefaultRunLoopMode];
- - (void)delegate1
- {
- //肯定请求路径
- NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=520it&pwd=520it&type=JSON"];
- //创建可变的请求对象
- NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
- //设置代劳
- NSURLConnection *connention = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
- //参加该段代码可以改变代劳办法履行的线程,默认是在主线程中履行,然则参加该段代码之后,代劳办法会在子线程中履行
- [connention setDelegateQueue:[[NSOperationQueue alloc] init]];
- //开端发送请求
- //1)该办法内部会吧connention对象作为一个source添加到runloop中,并且制订运行模式为默认
- //2)如不雅发明当前的runloop不存在,那么该办法内部会主动的创建并开启当缁び线程的runloop
- [connention start];
三 收集
1 GET和POST比较:
- GET请求参数直接跟在URL后面(?)
- POST请求参数是在请求体琅绫擎
2 HTTP根本通信过程:客户端—>请求—->办事器;办事器—>响应—->客户端
3 要乞降响应
请求:
- 请求头:包含了客户端的情况描述,客户端请求信息等
- 请求体:客户端发给办事器的具体数据,好交手件数据(POST请求才会有)
响应:
推荐阅读 沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践!
所谓边沿数据中间,指的就是:处于>>>详细阅读 本文标题:iOS开发3年只用5分钟搞定面试官 地址:http://www.17bianji.com/lsqh/40950.html 1/2 1