iphone开发之—网络与多线程
文章平均质量分 84
LIUXUN1993728
这个作者很懒,什么都没留下…
展开
-
AFNetworking框架的基本使用——GET、POST登录 、设置请求与响应的数据格式
AFNetworking框架的使用:将此框架拖进工程,导入工程头文件即可使用。具体使用非常简单,大致过程如下:第一步:新建一个网址字符串。第二步:新建AFHTTPRequestOperationManager对象。如下所示:AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanag原创 2015-11-01 12:15:46 · 2557 阅读 · 0 评论 -
MD5加盐进行加密 以及更完全的加密方法HMAC+MD5的方式进行加密
新建工程代码如下:加密分类文件如下:(以后可以直接拖取)NSString+Hash.h//// NSString+Hash.h// 01-数据安全//// Created by 刘天源 on 14/11/12.// Copyright (c) 2014年 itcast. All rights reserved.//#import @interface N原创 2015-10-28 22:46:36 · 4719 阅读 · 0 评论 -
POST上传JSON数据
POST上传JSON数据到服务器时有以下两种方式,但是最常用的是第二种:第一种:将要上传的JSON字符串(内容中的双引号前面必须要加转义字符\)然后按照UTF8编码格式转为NSData再设置给请求的数据体。如下所示:NSString *str = @"{\"username\" : \"小明\",\"age\" : \"24\"}"; request.HTTPBody = [str dat原创 2015-10-28 16:41:36 · 3733 阅读 · 0 评论 -
HTTP通信过程原理
打开火狐浏览器,打开本地服务器。发送登录 分别发送GET和POST请求。发送后,调试如下:具体数据分析如下:GET请求——>请求行GET /login.php?username=zhangsan&password=zhang HTTP/1.1GET:HTTP的请求方法login.php?username=zhangsan&原创 2015-10-28 10:44:33 · 9820 阅读 · 0 评论 -
Log的使用技巧——解决字典和和数组的直接打印时问题
由于Xcode对打印集合时没有做本地化设置,所以遍历的时候能打印中文字符 当直接打印集合的时候就会就将中文转化为Unicode码。为了解决这个问题,我们分别为NSArray和NSDictionary写两个分类拉进工程即可。因为打印时,默认是调用从NSObject继承而来的- (NSString *)descriptionWithLocale:(id)locale方法,所以重写这个方法即可。原创 2015-10-27 15:08:09 · 3571 阅读 · 0 评论 -
XML解析之DOM解析——利用第三方框架GDataXML进行XML解析,以及保存代码块的技巧
XML解析:SAX解析— 从上往下,一点一点的进行读取。— 性能好— 苹果自带并推荐使用。DOM方式—一次性将XML文档以树形结构读入内存。—内存的消耗比较大。—在IOS开发中默认不支持DOM方式。但一些第三方框架实现了DOM方式。— 只适合小的XML文件的解析。—KissXML 和 GData原理都是以这种方式进行实现。新建工程,打开本地服务器原创 2015-10-27 19:21:28 · 584 阅读 · 0 评论 -
新建Model涉及基本数据类型必须注意的问题——将基本数据类型转为NSNumber类型
将请求的数据使用KVC转为Model类型时,必须注意的是:Model中涉及基本数据类型的属性都设置为NSNumber类型。否则如果使用基本数据类型的作为Model的属性当那么服务器端将这个属性的值改为null的时候,程序就会崩溃。所以以后无论建立任何Model类型都将基本数据类型设置为NSNumber类型。新建工程:打开本地Apache服务器中的demo.json如下:具体原创 2015-10-27 14:10:14 · 1607 阅读 · 0 评论 -
GET请求和POST请求剖析
在HTTP/1.1协议中,定义了8种发送http请求的方法GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT、PATCH根据HTTP协议的设计初衷,不同的方法对资源有不同的操作方式PUT :增DELETE :删POST:改GET:查最常用的是GET和POST(实际上GET和POST都能办到增删改查)要想使用GET和POST请原创 2015-10-27 23:27:54 · 616 阅读 · 0 评论 -
数据解析之XML解析详解(苹果自带XML解析)——并将数据转成Model(需要重点掌握)
什么是XML?全称是Extensible Markup Language,可译为可扩展性标记语言。跟JSON一样,也是一种用于交互的数据格式。一般也叫做XML文档。XML举例 小黄人第01部" length="30" /> 小黄人第02部" length="19" /> 小黄人第03部" length="33" />XML语原创 2015-10-27 10:34:09 · 2828 阅读 · 0 评论 -
JSON解析详解(JSONKit、苹果自带解析)和PList文件的反序列化
JSON什么是JSON?JSON是一种轻量级的数据格式,一般用于数据交互。服务器返回客户端的数据,一般都是JSON格式或者是XML格式(文件下载除外)。资料网站:http://www.w3cschool.cc/JSON 语法是 JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JSON的格式很像OC中的字典和数原创 2015-10-26 17:12:54 · 1856 阅读 · 0 评论 -
Apache服务器的配置具体操作—— Apache比较强大,所以要配置Apache作为本地web服务器
配置Apache的详细步骤如下:想打开整个系统的隐藏文件可以在终端下输入以下命令defaults write com.apple.finder AppleShowAllFiles -bool true关闭显示隐藏功能defaults write com.apple.finder AppleShowAllFiles -bool false安装Apache(Mac10.10)需要做的主要原创 2015-10-26 09:43:23 · 1893 阅读 · 0 评论 -
归档解档的简单回顾——由于数据解析的原理与此类似(面试也会问到)
新建工程Person.h//// Person.h// 归档和解档//// Created by apple on 15/10/26.// Copyright (c) 2015年 LiuXun. All rights reserved.//#import /** 归档和解档在开发中很少使用 */@interface Person : NSObject@原创 2015-10-26 15:02:05 · 534 阅读 · 0 评论 -
VIM 终端命令的简单了解—— 配置服务器时需要
终端命令如下所示:两种模式pwd 当前路径ls 当前路径下的所有东西cd 进入文件目录vim 文件名:打开文件-编辑模式:可以进行正常的编辑操作 左下方显示 -- INSERT -- "在命令模式下输入 i能够进入编辑模式"-命令模式:可以通过命令 左下方什么也不显示 "在编辑模式下按 ESC能原创 2015-10-25 22:07:58 · 1227 阅读 · 0 评论 -
POST上传文件的原理剖析以及实例验证
如果向本地服务器上传文件,首先做的第一件事就是修改本地服务器端存放上传文件夹的权限。具体操作如下:在火狐利用本地服务器上传文件的做测试,数据分析如下:POST上传文件要拼接的串Content-Length(文件的大小)290Content-Type multipart/form-data; boundary(分隔符)=(可以随便写,但是不能有中文原创 2015-10-28 14:46:58 · 2681 阅读 · 0 评论 -
POST上传文件之分类抽取——以后只需要把分类导入,使用NSMutableURLRequest的分类即可
每次上传文件拼接数据都很麻烦,为了解决这个问题。我们可以为NSMutableURLRequest抽取一个分类如下所示:NSMutableURLRequest+Multipart.h//// NSMutableURLRequest+Multipart.h// 06-POST上传//// Created by apple on 15/1/20.// Copyright (原创 2015-10-28 15:32:33 · 506 阅读 · 0 评论 -
AFNetworking实现POST上传文件——图片、.json、MP4,,,,,等各种类型。
导入AFNetworking框架后,使用步骤如下:第一步:获取上传网址。如下所示:NSString *url =@"http://127.0.0.1/post/upload.php";第二步:新建AFHTTPRequestOperationManager对象,具体如下:AFHTTPRequestOperationManager *manager = [AFHTTPRequest原创 2015-11-01 21:05:37 · 8868 阅读 · 2 评论 -
NSURLSession解决下载中的进度跟进问题——通过实现NSURLSessionDownloadDelegate协议中的回调方法
使用NSURLSession解决下载中的进度跟踪问题,大致步骤如下:第一步:网址转义。因为网址中如果有中文的话是不可以被服务器识别的。所以要对其进行转义。需要注意的是:下载一般都是GET请求 只有GET请求需要对网址进行转义,POST请求是不需要转义的。使用的转义方法如下:- (NSString *)stringByAddingPercentEscapesUsingEncoding:原创 2015-10-31 13:22:02 · 2997 阅读 · 0 评论 -
URLSession解决断点续传问题。
在工程中,下载大的文件时时常用到断点续传。利用NSURLSession进行断点续传的步骤如下:(事先说明,真正的断点续传应该是即使程序退出后,再次启动还能接着原来的进度进行下载。)步骤一:进行界面布局,创建有关的按钮。步骤二:让当前控制器遵守NSURLSessionDownloadDelegate协议,并实现里面的三个回调方法。步骤三:建立全局变量。3.1 建立一个下载原创 2015-10-31 21:02:28 · 1926 阅读 · 0 评论 -
NSURLSession的介绍与基本用法
对比NSURLConnection中的存在很多问题,例如:NSURLConnection是IOS2.0推出的古老而又经典的网络解决方案。复杂的网络请求需要使用代理进行实现。代理方式默认在主线程工作。只提供了start&cancel方法,不能暂停。在使用多线程时需要使用运行循环。-------------------------------------------NS原创 2015-10-30 22:48:42 · 774 阅读 · 0 评论 -
利用运行循环解决NSURLConnection多线程下载的问题(只需要了解)
NSURLConnection问题: 1. 做复杂的网络操作,需要使用代理来实现。比如下载大文件 2. 默认下载任务在主线程工作。 3. 默认这个任务的代理也是在主线程 4. 如果添加到子线程去执行,需要主动启动运行循环 5. 只提供开始和取消。不支持暂停。代码如下://// ViewController.m// 11-NSURLConnecntion下原创 2015-10-30 10:34:20 · 780 阅读 · 0 评论 -
NSURLSession的应注意避免循环引用
NSURLSession的大致用处如下所示:需要注意的是要解决NSURLSession的循环引用问题:打开NSURLSession的头文件,发现其代理是retain强引用,如下所示:上一个断点续传中截取部分代码,分析如下图:解决方法如下:(1)在下载完成后取消NSURLSession会话并释放Session,赋值为nil。(2)再视图将要消失时也执行原创 2015-10-31 21:41:32 · 2880 阅读 · 0 评论 -
NSURLSession解决下载中的解压缩问题
//// ViewController.m// 04-URLSession的下载//// Created by apple on 15/1/23.// Copyright (c) 2015年 apple. All rights reserved./** NSURLSession下载,默认将下载的文件保存到tmp目录下。如果回调方法什么事情都没做。tmp里面的东西会自动删除原创 2015-10-30 23:52:01 · 889 阅读 · 0 评论 -
使用NSURLConnection解决下载的问题——同步解决下载内存峰值与进度跟进的问题(只需了解原理)
首先打开本地服务器(自己电脑的后台服务器),并拖进服务器端文件夹一个视频文件。打开服务器验证如下:然后打开本地服务器。具体代码如下://// ViewController.m// 使用NSURLConnection进行下载//// Created by apple on 15/10/29.// Copyright (c) 2015年 LiuXun. All r原创 2015-10-30 09:27:36 · 1033 阅读 · 0 评论 -
Cookie的原理解析——利用服务器发送来的Cookie进行判断并保存一些信息
Cookie(1)Cookie由服务器端生成,发送给客户端。(2)客户端将Cookie的key/value 保存到某个目录下的文本文件内。(3)如果客户端支持Cookie,下次请求同一网站时就可以Cookie直接发送给服务器。(4)Cookie名称和值由服务器端开发自己定义。Cookie 最典型的应用是判定注册用户是否已经登录,记录用户登录信息,简化下次登录的过程。比如:登陆一原创 2015-10-29 15:51:26 · 10337 阅读 · 0 评论 -
钥匙串的使用——使用钥匙串进行保存本地密码
为了使保存的本地密码更安全,我们需要使用钥匙串进行保存本地加密后的密码,苹果7.03之后自带了钥匙串。但是使用比较麻烦,全部使用c语言。我们可以使用别人封装好的SSKeychain框架即可使用,具体用法如下: 导入SSKeychain框架后可以直接使用的常用方法: 删除保存在钥匙串里的密码(很少用) + (BOOL)deletePasswordForService:(NSStrin原创 2015-10-29 09:10:56 · 3799 阅读 · 0 评论 -
开发中具体的加密思路
开发中的大致思路如下:原创 2015-10-28 23:11:48 · 480 阅读 · 0 评论 -
Base64编码加密的介绍与使用
目前网络服务器有种流行的Restful设计风格,如下图所示:在终端使用base64编码解码文件的方法和结果如下:结果如下:事实上Base64也常用于给用户的密码编码和解码。新建工程 进行掌握 步骤如下:代码如下://// ViewController.m// POST登录//// Created原创 2015-10-28 21:13:04 · 3780 阅读 · 0 评论 -
网络异步连接参数解析——利用配置好的APache本地服务器做测试
本地计算机的IP地址和域名IP地址:127.0.0.1是回送地址,指本地机,一般用来测试使用。无论什么程序,一旦使用回送地址发送数据,协议软件立即返回,不要进行任何网络传输。常用测试命令:ping 127.0.0.1域名:localhost在计算机网络中,localhost(本地主机)是给回路网络接口的一个标准主机名,相对应的IP地址为127.0.0.1打开本地连接,如原创 2015-10-26 12:01:24 · 504 阅读 · 0 评论 -
网络发送同步请求——(开发中一般不会使用,但是还是了解的好)
新建工程代码如下://// ViewController.m// 异步连接参数解析//// Created by apple on 15/10/26.// Copyright (c) 2015年 LiuXun. All rights reserved.//#import "ViewController.h"@interface ViewController ()原创 2015-10-26 14:31:22 · 686 阅读 · 0 评论 -
利用Reachability框架进行网络连接状态监测
网络连接状态监测几乎任何地方都离不了。进行联网状态监测,最简单的方法是使用第三方框架Reachability。其实就两个文件Reachability.h和Reachability.m文件,然后导入头文件就可以使用了。打开Reachability.h文件。最常使用的是+ (instancetype)reachabilityWithHostName:(NSString *)hostName原创 2015-10-25 13:12:27 · 560 阅读 · 0 评论 -
GCD知识点概要总结
GCD总结:GCD基础:C语言的“并发技术”框架。是苹果共公司为多核的并行运算提出的解决方案。自动管理线程的生命周期(创建线程、调度线程、销毁线程等)程序员只需要告诉GCD想要如何执行什么任务,不需要编写任何线程代码。注意以下生词的理解:dispatch:派遣调度queue:队列 sync:同步 async:异步 concurrent:并发GCD核心概念:原创 2015-10-22 15:59:05 · 498 阅读 · 0 评论 -
NSOperation的基本使用——本质是对GCD的封装
NSOperation的作用配合使用NSOperation和NSOperationQueue也能实现多线程编程。NSOperation和NSOperationQueue实现多线程的步骤:先将需要执行的操作封装到一个NSOperation对象中。然后将NSOperation对象添加到NSOperationQueue中。系统会自动将NSOperationQueue中的NSOpera原创 2015-10-22 21:42:20 · 894 阅读 · 0 评论 -
GCD之主队列、全局并发队列、以及同步任务的执行
主队列:专门负责在主线程上调度任务,不会在子线程上调度任务,在主队列不允许开新线程。主队列的特点:只在主线程运行,不开新线程。异步执行:会开新线程,在新线程执行。异步执行特点:不需要马上执行。异步主队列:不会开辟新线程,只在主线程上顺序执行。异步主队列的特点:主队列上的任务不会马上执行而是只把任务放到主队列,等线程有空时才去执行。同步执行特点:不会开辟新线程,会马上执行。原创 2015-10-21 19:29:49 · 4611 阅读 · 0 评论 -
GCD的简单使用——同步、异步、串行、并发的具体剖析
什么是GCD?全称是Grand Central Dispatch可译为 “牛逼的中枢调度器”纯C语言,提供了非常多强大的函数。GCD的优势GCD是苹果公司为多核的并行运算提出的解决方案GCD会自动利用更多的CPU内核(比如双核、四核)GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理的代码。原创 2015-10-21 14:35:27 · 1702 阅读 · 1 评论 -
GCD之队列的选择和与主线程之间的通信
队列的选择:串行队列异步执行- 开一条线程, 顺序执行。- 效率:不高,执行比较慢,资源占用小,省电。适用于网络连接:一般网络是3G,对性能要求不是很高。并发队列异步执行:- 开启多条线程,并发执行。- 效率:高,执行快,资源消耗大,费电。适用场合:适用于网络WiFi,或者需要很快的响应,要求用户体验非常流畅。对任务执行顺序没有要求。-同步任务:一般只会原创 2015-10-21 21:00:20 · 458 阅读 · 0 评论 -
GCD之——延迟执行、调度组、以及一次性执行代码
延时执行:IOS常见的延时执行有2种方式调用NSObject的方法[self performSelector:@selector(run) withObject:nil afterDelay:2.0];// 2秒后调用self的run方法使用GCD函数dispatch_after(dispatch_time(DISPATCH_TIME_NOW), (int64_t)(2.0原创 2015-10-21 22:52:50 · 514 阅读 · 0 评论 -
自动释放池原理
autorelease:即延迟释放。自动释放池的作用:在程序执行完毕即池子即将销毁的时候会对池子中所有调用autorelease的对象进行一次release操作。面试题一:自动释放池什么时候创建,什么时候销毁?每一次运行循环执行后,也就是每当事件被触发时都会创建自动释放池。在程序执行的过程中,所有autorelease的对象在出了作用域之后会被添加到最近创建的自动释放池中。运行循环结束原创 2015-10-20 21:48:07 · 2965 阅读 · 0 评论 -
多线程NSThread安全隐患与解除方法—— 利用加锁@synchronized(){}来解决
多线程的安全隐患。资源共享1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源。比如多个线程访问同一个对象、同一个变量、同一个文件。当多个线程访问同一块资源时,很容易引起数据错乱和数据安全问题。例如:存钱取钱的问题:如下图所示数据库中一个账户的余额是唯一的,假设有两个线程同时访问修改余额就会发生错误,例如:两个线程同时拿到余额值都为1000,第一个线程在原创 2015-10-05 21:41:03 · 1187 阅读 · 0 评论 -
多线程概念的理解——代码验证之耗时操作练习
什么是进程?进程指在系统中正在运行的一个应用程序。每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内。比如同时打开QQ、Xcode,系统就会分别启动2个进程。在电脑里可以通过“活动监视器”查看Mac系统中所开启的进程。什么是线程?一个进程想要执行任务,必须得有线程(每一个进程至少要有1条线程)。进程主要是用于开辟空间,而真正执行任务的是线程。线程是进程原创 2015-10-03 22:40:07 · 2110 阅读 · 0 评论 -
运行循环RunLoop原理剖析
GCD简介运行循环RunLoop即运行循环在IOS开发中几乎不用,但是概念的理解却非常重要。作用:保证程序不会退出。监听所有事件,例如:手势触摸,时钟触发(NSTimer),网络加载数据完成等。 没有事件时会休眠省电,一旦监听到事件,会立即响应。特性:每一个线程都有一个runloop, 但是只有主线程的runloop 会默认启动。runloop 本质就是一个死循环。代码模仿原创 2015-10-20 20:12:33 · 528 阅读 · 0 评论