- 博客(342)
- 资源 (7)
- 收藏
- 关注
原创 XMPP框架 微信项目开发之XMPP简介——XMPP的起源,工作原理,使用方法
即时通讯技术简介:即时通讯技术(IM- Instant Messaging)支持用户在线实时交谈。如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友再其中输入信息并让交谈双方都看到交谈的内容。有许多的IM系统,如AOL、Yahoo IM、 MSN以及QQ,它们最大的区别在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传输协议协议用来说明信息在网络上如何传输,如果有了统一
2015-11-04 23:34:26 3025
原创 XMPP框架 微信项目开发之Socket聊天室发送数据——获取键盘高度,修改控件的约束值,代码滚动UITabView到指定位置
在上篇中已经建立了基本的登录和服务器的连接,接下来在此基础之上实现聊天室数据的发送:新建工程,实现步骤具体如下:012345678910111213具体代码如下所示://// ViewController.m//
2015-11-04 21:04:08 1065
原创 XMPP框架 微信项目开发之Socket聊天室的建立与登录
Socket就是为网络服务提供的一种机制。通信的两端都是Socket。网络通信其实就是Socket间的通信。数据在两个Socket之间通过IO传输。Socket服务器有两种一种是类似于QQ的服务器,另一种就是网站服务器。所谓服务器就是提供资源访问的。网站服务器是短连接。聊天室是长连接。所谓的短连接比如访问网址时便会返回网站数据,返回数据后就会关闭连接。但是长连接一旦建立连接
2015-11-04 14:27:56 2162
原创 XMPP框架 微信项目开发之网络通信基础——OSI_TCP/IP 参考模型的理解
主机间的通信过程如下:OSI参考模型与TCP/IP参考模型的不同之处:各个层次的操作如下:最重要是掌握如下的传输控制协议(TCP)和用户数据报协议(UDP)的特点与区别:TCP(传输控制协议):建立连接,形成传输数据的通道。在连接中进行大数据传输(数据的大小不受限制)。通过三次握手完成连接,是可靠协议,完全送达。必须建立连接,效率会稍低。
2015-11-03 22:55:55 1235
原创 XMPP框架 微信项目开发之CoreData学习——使用CoreData建立多个数据库
当工程很大,涉及多个功能模块时。往往需要使用到多个数据库。当CoreData框架开发具有多个模块的工程时,也需要建立多个数据库,具体方法如下:第一步:新建实体模板,一般一个功能模块对应一个数据库,一个实体模板对应一个上下文对象。即需要将一个功能模块所涉及的所有实体都新建在一个对应的实体模板。对应关系:一个功能模块——>一个实体模板——>上下文对象——>一个数据库,然后由新建好的实体模板生成对应
2015-11-03 21:36:27 1521
原创 XMPP框架 微信项目开发之CoreData学习——CoreData的查询方式(模糊查询,嵌套查询,分页查询)
在使用CoreData从数据库查询数据时都是使用NSFetchRequest类进行查询条件设置。有以下几种查询方式:嵌套查询:嵌套查询就是查询子类对象成员的属性,使用谓词中的点语法可以实现。分页查询:就是分段进行查询。就是使用NSFetchRequest的fetchOffset属性设置起始查询位置,使用fetchLimit属性设置分页查询的最大条数。模糊查询:起始就是谓词中的END
2015-11-03 14:57:15 1142
原创 XMPP框架 微信项目开发之CoreData学习——CoreData的多表关联操作
多表关联时需要注意的问题:问题一:如果需要在原来工程的基础上新添功能(即新增实体),需要删除原先的数据库和原先生成的实体类。因为表结构发生了改变 其对应的实体类和数据库也都需要改变。所以要删除重新生成。问题二:在生成实体类的时候,是有先后顺序的,需要先生成那些只具有基本属性的非嵌套的实体类,然后再生成以这些只具备简单属性实体类对象为成员的嵌套实体类。多表关联还涉及一对一、一对多、以及级
2015-11-02 23:27:42 836
原创 XMPP框架 微信项目开发之CoreData学习——CoreData的基本使用
coreDataa> 什么是CoreData?CoreData是IOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化为数据,保存在SQLite数据库文件中,也能将保存在数据库中数据还原成OC对象。在此数据操作之间,我们不需要编写任何SQL语句,这个类似于Hibernate框架。平时把数据写到数据库,需要编写SQL语句把对象各个属性值插入到一张表中
2015-11-02 21:36:59 1036
原创 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
原创 AFNetworking框架的基本使用——GET、POST登录 、设置请求与响应的数据格式
AFNetworking框架的使用:将此框架拖进工程,导入工程头文件即可使用。具体使用非常简单,大致过程如下:第一步:新建一个网址字符串。第二步:新建AFHTTPRequestOperationManager对象。如下所示:AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanag
2015-11-01 12:15:46 2556
原创 NSURLSession的应注意避免循环引用
NSURLSession的大致用处如下所示:需要注意的是要解决NSURLSession的循环引用问题:打开NSURLSession的头文件,发现其代理是retain强引用,如下所示:上一个断点续传中截取部分代码,分析如下图:解决方法如下:(1)在下载完成后取消NSURLSession会话并释放Session,赋值为nil。(2)再视图将要消失时也执行
2015-10-31 21:41:32 2880
原创 URLSession解决断点续传问题。
在工程中,下载大的文件时时常用到断点续传。利用NSURLSession进行断点续传的步骤如下:(事先说明,真正的断点续传应该是即使程序退出后,再次启动还能接着原来的进度进行下载。)步骤一:进行界面布局,创建有关的按钮。步骤二:让当前控制器遵守NSURLSessionDownloadDelegate协议,并实现里面的三个回调方法。步骤三:建立全局变量。3.1 建立一个下载
2015-10-31 21:02:28 1924
原创 NSURLSession解决下载中的进度跟进问题——通过实现NSURLSessionDownloadDelegate协议中的回调方法
使用NSURLSession解决下载中的进度跟踪问题,大致步骤如下:第一步:网址转义。因为网址中如果有中文的话是不可以被服务器识别的。所以要对其进行转义。需要注意的是:下载一般都是GET请求 只有GET请求需要对网址进行转义,POST请求是不需要转义的。使用的转义方法如下:- (NSString *)stringByAddingPercentEscapesUsingEncoding:
2015-10-31 13:22:02 2997
原创 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
原创 NSURLSession的介绍与基本用法
对比NSURLConnection中的存在很多问题,例如:NSURLConnection是IOS2.0推出的古老而又经典的网络解决方案。复杂的网络请求需要使用代理进行实现。代理方式默认在主线程工作。只提供了start&cancel方法,不能暂停。在使用多线程时需要使用运行循环。-------------------------------------------NS
2015-10-30 22:48:42 774
原创 利用运行循环解决NSURLConnection多线程下载的问题(只需要了解)
NSURLConnection问题: 1. 做复杂的网络操作,需要使用代理来实现。比如下载大文件 2. 默认下载任务在主线程工作。 3. 默认这个任务的代理也是在主线程 4. 如果添加到子线程去执行,需要主动启动运行循环 5. 只提供开始和取消。不支持暂停。代码如下://// ViewController.m// 11-NSURLConnecntion下
2015-10-30 10:34:20 780
原创 使用NSURLConnection解决下载的问题——同步解决下载内存峰值与进度跟进的问题(只需了解原理)
首先打开本地服务器(自己电脑的后台服务器),并拖进服务器端文件夹一个视频文件。打开服务器验证如下:然后打开本地服务器。具体代码如下://// ViewController.m// 使用NSURLConnection进行下载//// Created by apple on 15/10/29.// Copyright (c) 2015年 LiuXun. All r
2015-10-30 09:27:36 1033
原创 Cookie的原理解析——利用服务器发送来的Cookie进行判断并保存一些信息
Cookie(1)Cookie由服务器端生成,发送给客户端。(2)客户端将Cookie的key/value 保存到某个目录下的文本文件内。(3)如果客户端支持Cookie,下次请求同一网站时就可以Cookie直接发送给服务器。(4)Cookie名称和值由服务器端开发自己定义。Cookie 最典型的应用是判定注册用户是否已经登录,记录用户登录信息,简化下次登录的过程。比如:登陆一
2015-10-29 15:51:26 10337
原创 钥匙串的使用——使用钥匙串进行保存本地密码
为了使保存的本地密码更安全,我们需要使用钥匙串进行保存本地加密后的密码,苹果7.03之后自带了钥匙串。但是使用比较麻烦,全部使用c语言。我们可以使用别人封装好的SSKeychain框架即可使用,具体用法如下: 导入SSKeychain框架后可以直接使用的常用方法: 删除保存在钥匙串里的密码(很少用) + (BOOL)deletePasswordForService:(NSStrin
2015-10-29 09:10:56 3798
原创 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
原创 Base64编码加密的介绍与使用
目前网络服务器有种流行的Restful设计风格,如下图所示:在终端使用base64编码解码文件的方法和结果如下:结果如下:事实上Base64也常用于给用户的密码编码和解码。新建工程 进行掌握 步骤如下:代码如下://// ViewController.m// POST登录//// Created
2015-10-28 21:13:04 3780
原创 POST上传JSON数据
POST上传JSON数据到服务器时有以下两种方式,但是最常用的是第二种:第一种:将要上传的JSON字符串(内容中的双引号前面必须要加转义字符\)然后按照UTF8编码格式转为NSData再设置给请求的数据体。如下所示:NSString *str = @"{\"username\" : \"小明\",\"age\" : \"24\"}"; request.HTTPBody = [str dat
2015-10-28 16:41:36 3733
原创 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
原创 POST上传文件的原理剖析以及实例验证
如果向本地服务器上传文件,首先做的第一件事就是修改本地服务器端存放上传文件夹的权限。具体操作如下:在火狐利用本地服务器上传文件的做测试,数据分析如下:POST上传文件要拼接的串Content-Length(文件的大小)290Content-Type multipart/form-data; boundary(分隔符)=(可以随便写,但是不能有中文
2015-10-28 14:46:58 2680
原创 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
原创 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
原创 XML解析之DOM解析——利用第三方框架GDataXML进行XML解析,以及保存代码块的技巧
XML解析:SAX解析— 从上往下,一点一点的进行读取。— 性能好— 苹果自带并推荐使用。DOM方式—一次性将XML文档以树形结构读入内存。—内存的消耗比较大。—在IOS开发中默认不支持DOM方式。但一些第三方框架实现了DOM方式。— 只适合小的XML文件的解析。—KissXML 和 GData原理都是以这种方式进行实现。新建工程,打开本地服务器
2015-10-27 19:21:28 584
原创 Log的使用技巧——解决字典和和数组的直接打印时问题
由于Xcode对打印集合时没有做本地化设置,所以遍历的时候能打印中文字符 当直接打印集合的时候就会就将中文转化为Unicode码。为了解决这个问题,我们分别为NSArray和NSDictionary写两个分类拉进工程即可。因为打印时,默认是调用从NSObject继承而来的- (NSString *)descriptionWithLocale:(id)locale方法,所以重写这个方法即可。
2015-10-27 15:08:09 3570
原创 新建Model涉及基本数据类型必须注意的问题——将基本数据类型转为NSNumber类型
将请求的数据使用KVC转为Model类型时,必须注意的是:Model中涉及基本数据类型的属性都设置为NSNumber类型。否则如果使用基本数据类型的作为Model的属性当那么服务器端将这个属性的值改为null的时候,程序就会崩溃。所以以后无论建立任何Model类型都将基本数据类型设置为NSNumber类型。新建工程:打开本地Apache服务器中的demo.json如下:具体
2015-10-27 14:10:14 1607
原创 数据解析之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 2827
原创 JSON解析详解(JSONKit、苹果自带解析)和PList文件的反序列化
JSON什么是JSON?JSON是一种轻量级的数据格式,一般用于数据交互。服务器返回客户端的数据,一般都是JSON格式或者是XML格式(文件下载除外)。资料网站:http://www.w3cschool.cc/JSON 语法是 JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JSON的格式很像OC中的字典和数
2015-10-26 17:12:54 1853
原创 归档解档的简单回顾——由于数据解析的原理与此类似(面试也会问到)
新建工程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
原创 网络发送同步请求——(开发中一般不会使用,但是还是了解的好)
新建工程代码如下://// 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
原创 网络异步连接参数解析——利用配置好的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
原创 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 1892
原创 VIM 终端命令的简单了解—— 配置服务器时需要
终端命令如下所示:两种模式pwd 当前路径ls 当前路径下的所有东西cd 进入文件目录vim 文件名:打开文件-编辑模式:可以进行正常的编辑操作 左下方显示 -- INSERT -- "在命令模式下输入 i能够进入编辑模式"-命令模式:可以通过命令 左下方什么也不显示 "在编辑模式下按 ESC能
2015-10-25 22:07:58 1227
原创 网络必须首先了解的基本知识
在网络编程中,有几个必须掌握的基本概念客户端(Client):移动应用(iOS、android等应用)服务器(Server):为客户端提供服务、提供数据、提供资源的机器请求(Request):客户端向服务器索取数据的一种行为响应(Response):服务器对客户端的请求做出的反应,一般指返回数据给客户端作为移动开发工程师,主要的精力都是放在前端开发服务器:按照软
2015-10-25 20:46:11 456
原创 利用Reachability框架进行网络连接状态监测
网络连接状态监测几乎任何地方都离不了。进行联网状态监测,最简单的方法是使用第三方框架Reachability。其实就两个文件Reachability.h和Reachability.m文件,然后导入头文件就可以使用了。打开Reachability.h文件。最常使用的是+ (instancetype)reachabilityWithHostName:(NSString *)hostName
2015-10-25 13:12:27 560
原创 SDWebImage的底层介绍以及——需要了解和掌握的要点(包括面试题,图片格式,以及GIF的播放)
具体如下所示:官方网站$ git clone --recursive https://github.com/rs/SDWebImage.git1> 面试题1] 如何防止一个url对应的图片重复下载* "cell下载图片思路 –有沙盒缓存"2] SDWebImage的默认缓存时长是多少?* 1个星期3] SDWebImage底层是怎么
2015-10-25 11:46:09 2090
UILabel分类——自动调整处理文章格式显示
2015-10-19
IOS第三方库大全
2015-10-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人