IOS开发
文章平均质量分 57
帅气的弟八哥
敏于行而慎于言,讷于言而敏于行
展开
-
iOS多线程理解
在iOS开发中,线程的创建与管理已经被Apple进行了很好的封装,但是在开发者实际开发中会滥用GCD,导致整个代码混乱不堪,因此在这里需要对iOS开发中的多线程开发进行整理。1. 主线程完成耗时操作,会导致UI卡顿,因此耗时操作要以子线程的运行方式来运行 在iOS的Framework Controller中重载的与UI相关的方法都是在主线程中完成的,因此如果有需要从网络下载数据的原创 2016-01-19 13:29:29 · 532 阅读 · 0 评论 -
iOS手势操作简介(五)
利用手势操作实现抽屉效果:第一步:搭建UI(void)addChildView { // left UIView *leftView = [[UIView alloc] initWithFrame:self.view.bounds]; leftView.backgroundColor = [UIColor greenColor]; [self.view ad原创 2016-02-01 16:25:38 · 447 阅读 · 0 评论 -
iOS手势操作简介(六)
利用UIGestureRecognizer来对手势进行处理:@interface HMViewController () @property (weak, nonatomic) IBOutlet UIImageView *imagView;@end@implementation HMViewController(void)viewDidLoad { [super viewDidLoad];原创 2016-02-01 16:32:19 · 435 阅读 · 0 评论 -
HTTP基本认证
HTTP质询/响应认证框架 HTTP提供了一个原生的质询/响应框架,简化了对用户的认证过程。HTTP的认证模型如图所示. Web服务器接收到一条HTTP请求报文时,服务器没有直接响应请求的资源,而是以一个“认证质询”进行响应,要求用户提供一些保密信息来说明其身份。用户再次发起请求时,要附上保密证书(用户名和密码)。如果与要求的不匹配,服务器可以再次质转载 2016-03-03 10:52:54 · 672 阅读 · 0 评论 -
iOS中持久化存储SQLite(一)
在iOS中做持久化存储有多种方案,其中包括plist, preference, sqlite, core data,其中: (1)plist, preference适合小型数据存储,因为每次存储前都必须将文件内容读到内存中,因此如果数据量过大就会占用大量的内存,同时修改与查询也不是很方便,都必须读入内存中,自己来写相应的查询函数来查询结果。 (2)sqlite为嵌入式系统中使用的持久化存储数据库原创 2016-02-17 08:43:23 · 402 阅读 · 0 评论 -
iOS中SQLite持久化存储第三方库FMDB
@interface HMShopTool : NSObject + (NSArray *)shops; + (void)addShop:(HMShop *)shop; @end @implementation HMShopToolstatic FMDatabase *_db;(void)initialize { // 1.打开数据库 NSString *path = [[NSSea原创 2016-02-17 09:02:15 · 493 阅读 · 0 评论 -
iOS并行程序开发- GCD & NSOperationQueue(1)
iOS并行程序开发DEMO原创 2016-02-04 10:39:04 · 562 阅读 · 0 评论 -
面向接口的编程
面向接口的编程,将接口与实现分离,可以极大的降低代码的耦合,比如在编程中使用的加密接口,如果将具体的加密算法写入到使用加密的地方,这样就会导致,下一次加密方法发生改变的时候会导致大量的地方需要修改。如果是面向接口的编程,那么只会在具体实现代码的地方进行重写一个加密类即可。 对外提供统一的密码接口 @interface CipherInterface : NSObject // 加密接口 +原创 2016-02-17 15:55:26 · 473 阅读 · 0 评论 -
简单冒泡排序
void swap(int *pa, int *pb) { int temp = *pa; *pa = *pb; *pb = temp; }void bubbleSort(int A[], int n) { bool sorted = false; while (!sorted) { sorted = true;原创 2016-02-18 16:29:00 · 1222 阅读 · 0 评论 -
iOS核心动画之CALayer-layer的创建
本文目录一、添加一个简单的图层二、添加一个显示图片的图层三、为什么CALayer中使用CGColorRef和CGImageRef这2种数据类型,而不用UIColor和UIImage?四、UIView和CALayer的选择五、UIView和CALayer的其他关系* 上一讲已经说过,UIView内部默认有个CALayer对象(层),通过layer属性可以访问这个层。要注意的是,这转载 2016-02-24 10:17:55 · 574 阅读 · 0 评论 -
iOS核心动画之CALayer-隐式动画
本文目录一、隐式动画属性二、position和anchorPoint回到顶部一、隐式动画属性* 在前面几讲中已经提到,每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层)。所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画。* 当对非Root Layer的部分属性转载 2016-02-24 11:01:28 · 532 阅读 · 0 评论 -
iOS核心动画之CALayer-自定义层
本文目录一、自定义层的方法1二、自定义层的方法2 三、其他自定义层,其实就是在层上绘图,一共有2种方法,下面详细介绍一下。回到顶部一、自定义层的方法1方法描述:创建一个CALayer的子类,然后覆盖drawInContext:方法,使用Quartz2D API进行绘图1.创建一个CALayer的子类 2.在.m文件中覆盖d转载 2016-02-24 11:16:48 · 632 阅读 · 0 评论 -
iOS核心动画之CoreAnimation
本文目录一、Core Animation简介二、Core Animation的使用步骤三、CAAnimation四、CAPropertyAnimation回到顶部一、Core Animation简介* Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍。也就是转载 2016-02-24 15:05:09 · 513 阅读 · 0 评论 -
iOS核心动画 Core Animation2-CABasicAnimation
Core Animation2-CABasicAnimation本文目录一、平移动画二、缩放动画三、旋转动画四、其他CABasicAnimation是CAPropertyAnimation的子类,使用它可以实现一些基本的动画效果,它可以让CALayer的某个属性从某个值渐变到另一个值。下面就用CABasicAnimation实现几个简单的动画。* 先初始转载 2016-02-24 15:10:34 · 554 阅读 · 0 评论 -
iOS持久化存储-CoreData简介
本文目录一、简介二、模型文件三、了解NSManagedObject对象四、CoreData中的核心对象五、代码实现六、打开CoreData的SQL语句输出开关七、创建NSManagedObject的子类回到顶部一、简介 Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库转载 2016-02-24 16:23:37 · 565 阅读 · 0 评论 -
iOS持久化存储-CoreData简介
本文目录一、简介二、模型文件三、了解NSManagedObject对象四、CoreData中的核心对象五、代码实现六、打开CoreData的SQL语句输出开关七、创建NSManagedObject的子类回到顶部一、简介 Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,转载 2016-02-24 17:43:34 · 550 阅读 · 0 评论 -
Core Foundation 与 cocoa Foundation框架区别
Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务:群体数据类型 (数组、集合等)程序包字符串管理日期和时间管理原始数据块管理偏好管理URL及数据流操作线程和RunLoop转载 2016-02-25 08:45:40 · 1526 阅读 · 0 评论 -
iOS手势操作简介(四)
当事件传递到相应的UIResponder后,会首先调用:hitTest:withEvent: return (UIView *)UIApplication -> UIWindow什么时候调用:当事件传递给一个控件的时候就会调用作用:找最合适的viewhitTest:withEvent: return (UIView *)1.看窗口是否能接收。 如果不能 return nil; 自己不能接收事件原创 2016-02-01 16:04:20 · 470 阅读 · 0 评论 -
iOS手势操作简介(三)
监听触摸事件的做法 如果想监听一个view上面的触摸事件,之前的做法是 自定义一个view 实现view的touches方法,在方法内部实现具体处理代码通过touches方法监听view触摸事件,有很明显的几个缺点 必须得自定义view 由于是在view内部的touches方法中监听触摸事件,因此默认情况下,无法让其他外界对象监听view的触摸事件 不容易区分用户的具体手势行为iOS 3原创 2016-02-01 14:21:22 · 374 阅读 · 0 评论 -
iOS单例初步理解
iOS单例初步理解在iOS开发中,系统自带的框架中使用了很多单例,非常方便用户(开发者,使用比如[NSApplication sharedApplication] 等),在实际的开发中,有时候也需要设计单例对象,为保证每次获取的对象都为同一个对象。 在iOS开发中创建单例具体步骤: 1.提供一个类方法:+ (instancetype)sharedXXXX; 2.创建一个全局静态变量static原创 2016-01-21 11:38:46 · 517 阅读 · 0 评论 -
iOS中的多线程一般使用场景
在IOS开发中为提高程序的运行效率会将比较耗时的操作放在子线程中执行,iOS系统进程默认启动一个主线程,用来响应用户的手势操作以及UI刷新,因此主线程又叫做UI线程。 前面的Blog说明了NSThread以及GCD处理并发线程以及线程安全(线程锁@synchronized(){}),线程通信(从子线程向主线程传递值,刷新界面),接下来讨论线程的延迟与执行的单一化(唯一执行一次)。 1.延迟原创 2016-01-21 16:08:38 · 5400 阅读 · 0 评论 -
iOS中如何优化Cell中图片的下载性能
在iOS开发中使用最为常见的是UITableView,其中UITabelViewCell中下载图片,会影响用户下拉刷新UI,导致卡顿,用户体验不好,在这篇blog中,我将以一个例子来说明如何优化UITableView下载图片原创 2016-01-22 15:57:28 · 1169 阅读 · 0 评论 -
XCode7 创建framework
1.新建一个静态库工程.file→ new→ project, 弹出框中选择iOS→ framework & library中的cocoa touch static library.点击Next,输入product name: TestFramework, 点击Next→ 点击Create.2.删除向导所生成工程中的Target.点击工程名→ 点击TARGETS → 右键Delete.3.增加一个新转载 2016-01-25 16:28:01 · 783 阅读 · 0 评论 -
iOS----JSON解析
在iOS开发中与服务器进行数据交互操作,操作过程中使用最为常见的格式为JSON与XML,其中JSON较为清量,因此本篇blog就讲解一下如何在iOS中进行JSON解析。原创 2016-01-26 15:32:33 · 754 阅读 · 0 评论 -
牛逼的密码破解网站
http://www.cmd5.com原创 2016-01-27 10:13:38 · 8344 阅读 · 1 评论 -
iOS中下载小文件
在iOS中通过网络下载小文件比如小型图片等资源,一般在子线程中将数据完全下载完毕,然后在调用block将下载的数据整个部分返回,或者采用同步返回下载数据。 一般采用以下两种方式: (1)使用GCD将下载操作放入子线程队列中去,使用data自带的方法:默认使用get请求,同步获取下载返回数据。 - (void)downLoadFile { dispatch_async(dispatch原创 2016-01-28 09:38:56 · 605 阅读 · 0 评论 -
iOS下载大文件原理解析一
iOS中下载大型文件,需要考虑到占用内存的大小与下载速度(使用多线程),因此本文首先介绍一个原理性下载文件的DEMO。 在下载大型文件中,需要知道下载的进度因此需要使用代理模式,不断的回调下载进度。 - (void)downLoad { // 1.URL NSURL *url = [NSURL URLWithString:@”http://localhost:8080/MJS原创 2016-01-28 10:19:18 · 1194 阅读 · 0 评论 -
iOS中下载大型文件的原理解析二
在iOS中下载大型文件,需要使用NSURLConnection 的代理方法:(void)touchesBegan:(NSSet)touches withEvent:(UIEvent *)event { NSURL *url = [NSURL URLWithString:@”http://d.3987.com/fengj_141112/007.jpg“]; NSURLRequest *reque原创 2016-01-28 14:10:35 · 477 阅读 · 0 评论 -
iOS下载大型文件原理解析三
在下载大型文件过程中是可以取消下载的 - (IBAction)download:(UIButton *)sender { // 状态取反 sender.selected = !sender.isSelected;// 断点续传// 断点下载if (sender.selected) { // 继续(开始)下载 // 1.URL NSURL *url = [NSU原创 2016-01-28 14:23:17 · 474 阅读 · 0 评论 -
NSURLSession的应用
iOS7以后发布了NSURLSession用来替换NSURLConnection,NSURLSession使用方式有以下两种: 1.block方式 (1)创建的步骤 获取单例会话对象 创建URL对象 隐含创建request 创建NSURLSessionDataTask // 1.获取会话对象NSURLSe原创 2016-01-28 16:46:50 · 517 阅读 · 0 评论 -
iOS中XML解析
iOS中XML解析分为两种实现方式:SAX与DOM SAX方式:主要是事件驱动的解析方式,是逐行读取XML数据,不断回调代理,告诉代理当前解析的元素开始或者结束。 DOM解析方式:是讲整个XML数据全部读入内存,然后形成一颗树形结构,再根据元素的名称来读取相关的属性。 优缺点: (1)SAX解析适合大型文件解析,对内存占用比较小,但是解析是采用事件驱动方式,因此代码比较零散复杂。 (2)D原创 2016-01-29 09:30:50 · 582 阅读 · 0 评论 -
iOS中POST请求
iOS中POST请求的发送需要使用NSMutableURLRequest可以设置URL request的头字段,比如超时时间,请求类型:GET POST等一些关键头字段: - (IBAction)login { // 1.用户名 NSString *usernameText = self.username.text; if (usernameText.length =原创 2016-01-29 09:39:20 · 1151 阅读 · 0 评论 -
发送JSON数据给服务器
需要将JSON格式的数据传送给服务器,注意需要设置: [request setValue:@”application/json” forHTTPHeaderField:@”Content-Type”]; Content-Type类型为:application/json// 1.URLNSURL *url = [NSURL URLWithString:@"http://localhost:80原创 2016-01-29 09:45:28 · 1096 阅读 · 0 评论 -
iOS手势操作简介(一)
iOS中能够响应手势操作的类必须要继承自UIResponder,才能够处理手势响应操作。 默认继承了UIResponder的类有:UIApplication UIViewController UIView都继承自UIResponder. UIView是UIResponder的子类,可以实现下列4个方法处理不同的触摸事件 **一根或者多根手指开始触摸view,系统会自动调用view的下面方法**原创 2016-02-01 13:46:45 · 548 阅读 · 0 评论 -
iOS开发中手势处理简介(二)
iOS中手势操作事件的产生于传递发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常,先发送事件给应用程序的主窗口(keyWindow)主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件,但是这仅仅是整个事件处理过程的第一步找到合适的视图控件后,就会调用视图控件的touch原创 2016-02-01 14:00:09 · 422 阅读 · 0 评论 -
Objective-C Runtime的数据类型
转自:http://www.cnblogs.com/whyandinside/archive/2013/02/26/2933552.htmlClassObjective-C是支持反射的,先来了解一下其如何表达一个类。在Objective-C的Runtime中有个类型是Class(只在Runtime环境中使用),用来表示Objective-C中的类,其定义为:typedef转载 2016-02-26 11:36:07 · 487 阅读 · 0 评论