- 博客(21)
- 收藏
- 关注
原创 单例设计模式
/*** 定义:单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 要点: 1、某个类只能有一个实例 2、它必须自行创建这个实例 3、它必须向整个系统提供这个实例优点:1、实例控制:Singleton会阻止其他对象实例化其自己的Singleton 对象的副本,从而确
2016-10-19 17:32:57
321
原创 NSKeyedArchiver 归档和回档
NSKeyedArchiver 归档和回档如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型,可以直接用NSKeyedArchiver进行归档和恢复 不是所有的对象都可以直接用这种方法进行归档,只有遵守了NSCoding协议的对象才可以 NSCoding协议有2个方法: encodeWithCoder: 每次归档对象时,都会
2016-10-19 17:29:17
412
原创 nil,NULL,NSNull,Nil区别
1.nil指向一个对象的指针为空 在objc.h中的定义如下所示:#ifndef nil# if __has_feature(cxx_nullptr)# define nil nullptr# else# define nil __DARWIN_NULL# endif#endif在Objective-C中用于id类型的对象NSString *name = nil;NSURL
2016-10-19 17:28:00
413
转载 iOS内存警告
清空内存缓存,取消操作IOS内存警告处理 IPhone下每个app可用的内存是被限制的,如果一个app使用的内存超过20M,则系统会向该app发送Memory Warning消息。收到此消息后,app必须正确处理,否则可能出错或者出现内存泄露。app收到Memory Warning后会调用:UIApplication::didReceiveMemoryWarning -> UIApplicatio
2016-10-19 17:24:44
1943
转载 ios中修改字体
1.使用系统默认提供的字体系统默认提供的字体主要是指UIFont中提供的字体,其使用代码为:fontLabel.font = [UIFont fontWithName:@”Marion” size:17];字体[UIFont familyNames];如上所诉通过字体详细字典对字体属性进行设置 /* UIFontDescriptorFamilyAttribute:设置字体家族名 UIFon
2016-10-19 17:10:50
669
原创 文件查看之UIDocumentInteractionController和UIWebView.WKWebView
iOS中的沙盒可以让平台更加的安全,这也是沙盒给用户带来的最主要好处。不过由于沙盒的严格限制,导致程序之间共享数据比较麻烦。一般在程序间共享文档可以通过UIDocumentInteractionController(该类经常被开发者忽略) UIDocumentInteractionController在iOS 3.2中就已经存在了,使用起来非常灵活,功能也比较强大。它除了支持同设备上app之间的文
2016-10-19 17:09:17
1382
原创 WKWebView和UIWebView
UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView将逐步取代笨重的UIWebView。通过简单的测试即可发现UIWebView占用过多内存,且内存峰值更是夸张。WKWebView网页加载速度也有提升,但是并不像内存那样提升那么多基本属性:网页加载进度、网页标题,这些网页的最最基本的属性,终于齐了。前进后退手势:在UIWebView实现过这个功能的我,深知此
2016-10-19 16:56:22
963
原创 百度地图开发API
注意点: 1.由于系统原因,iOS不允许使用第三方定位,因此地图SDK中的定位方法,本质上是对原生定位的二次封装。通过封装,开发者可更便捷的使用。此外,地图SDK中还提供了相应的定位图层(支持定位三态效果),帮助开发者显示当前位置信息。(百度地图坐标系统 WGS84坐标系:即地球坐标系,国际上通用的坐标系。 GCJ02坐标系:即火星坐标系,WGS84坐标系经加密后的坐标系。 BD09坐标系:
2016-10-19 16:50:38
1307
转载 在既有类中使用关联对象存放自定义数据
**在既有类中使用关联对象存放自定义数据** 有时需要在对象中存放相关信息。这时我们通常会从对象所属的类中继承一个子类,然后改用这个子类对象。然而并非所有情况下都能这么做,有时候类的实例可能是由某种机制所创建的,而开发者无法令这种机制创建出自己所写的子类实例。Objective-C中有一项强大的特性可以解决此问题,这就是“关联对象”(Associated Object)。 下列方
2016-07-19 11:33:18
541
原创 线程间通信
1.performSelector- (void)perform { NSString *urlString = @"http://pic13.nipic.com/20110415/1347158_132411659346_2.jpg"; //下载操作放到后台执行 [self performSelectorInBackground:@selector(loadImage:)
2016-02-20 21:20:56
407
原创 NSOperation使用
NSOperation1.简单说明NSOperation的作⽤:配合使用NSOperation和NSOperationQueue也能实现多线程编程NSOperation和NSOperationQueue实现多线程的具体步骤:(1)先将需要执行的操作封装到一个NSOperation对象中(2)然后将NSOperation对象添加到NSOperationQueue中(3)系统会⾃动将NSOperatio
2016-02-20 20:40:16
539
原创 GCD 的使用
GCD : 纯 C 语言的 APIGCD 核心 1.任务:执行什么操作 同步:永远只在当前线程上 从上往下,依次执行 执行,这个就叫做同步 异步:永远不在当前的线程上执行,它跑到别的线程上面去执行。 总结:同步方法 永远在当前线程上执行,所以没有开辟线程的能力。 异步方法,因为要在别的线程上去执行,所以它具有开辟线程的能力。
2016-02-20 19:58:43
497
原创 Swift 中的闭包循环引用
/* 闭包 与 OC 中的 Block 类似,闭包主要用于异步操作执行完成后的代码回调,网络访问结果以参数的形式传递给调用方 闭包类似于 OC 中的 Block * 预先定义好的代码 * 在需要时执行 * 可以当作参数传递 * 可以有返回值 * 包含 self 时需要注意循环引用1.提前准备好的一段可以执行的代码2.可以当做参数传递 3.在
2016-02-17 12:42:49
645
原创 Swift 单例与懒加载
//懒加载就是在闭包中创建对象,并且只加载一次 lazy var btn : UIButton = { //() -> UIButton in let button = UIButton(frame: CGRect(x: 0, y: 0, width: 20, height: 20)) return button } () //懒加载数据
2016-02-17 12:37:38
523
原创 二维码扫描
// 先要导入 AVFoundation.framework#import "ViewController.h"#import <AVFoundation/AVFoundation.h>//1.有个素材@interface ViewController ()<AVCaptureMetadataOutputObjectsDelegate>//2.输入设备 采集摄像头捕捉到信息@propert
2016-02-17 12:35:42
434
原创 绘图的五种方式
- (void)test5{ //第五种 OC类型 UIBezierPath *path = [UIBezierPath bezierPath]; [path moveToPoint:CGPointMake(10, 10)]; [path addLineToPoint:CGPointMake(200, 200)]; [path addLineToPoint:CGP
2016-02-17 12:34:03
833
原创 AFNetWorking 封装
1.Swiftimport AFNetworkinglet blogDomain = "com.baidu.data.error"//swift 中的枚举enum HTTPType : String { case POST = "POST" case GET = "GET"}//创建网络分类,隔离 AFN框架与 自身代码class Networktools: AFHTTPSessi
2016-02-17 12:24:54
634
原创 GCD
GCD (Grand Central Dispatch) 纯C语言,函数强大GCD的优势 GCD是苹果公司为多核的并行运算提出的解决方案 GCD会自动利用更多的CPU内核(比如双核、四核) GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程) 程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码 GCD特点: 性能最好,代码更精简,与系统衔接更好(基于XNU内核
2015-12-11 23:26:36
331
原创 Block的循环引用
产生的原因是在 block中使用self ,此时 block由于 copy的原因,对 self 是强引用,并且将 block作为 self 的成员变量的闭包,而且 self 的改成员变量中又对 block 闭包强引用,所以该成员变量间接地对 self也是强引用,而 self 对于成员变量的强引用,造成了循环引用.二者不能都释放,会造成内存泄露 例子://创建 NetworkTools#impo
2015-12-11 23:13:21
366
原创 消息循环NSRunLoop
NSRunLoop (消息循环) RunLoop就是消息循环,每一个线程内部都有一个消息循环。 只有主线程的消息循环默认开启,子线程的消息循环默认不开启。NSRunLoop的作用 1,保证程序不退出 2.负责处理输入事件 3.如果没有事件发生.会让程序进入休眠状态事件源 : input Sources 输入源 Timer Source 定时源消息循环使用 1.创建输入
2015-12-11 22:56:26
462
原创 沙盒文件存储
1.plist文件的存取 1.1 Document的目录搜索// 1.拼接字符串 NSString* homePath = NSHomeDirectory(); (获得沙盒路径) // NSString* docPath = [homePath stringByAppendingString:@"/Documents"]; // NSString* docP
2015-12-11 21:06:37
507
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人