摘要: 基本概念 自定义对象要支持归档,需要实现NSCoding协议 NSCoding协议有两个方法,encodeWithCoder方法对对象的属性数据做编码处理,initWithCoder解码归档数据来初始化对象 实现NSCoding协议后,就能通过NSKeyedArchiver归档实例代码:User.h1 #import 2 3 @interface User : NSObject4 5 @property(nonatomic,copy)NSString *name;6 @property(nonatomic,copy)NSString *email;7 @property(nonatomi... 阅读全文
posted @ 2014-01-06 12:21 墨_守 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 大神就不要喷我了,写这个只是希望新人能够对自己写的项目更方便的本地管理。(其实我也只会这点东西=w=) 这两天稍微看了看GitHub,之前不是很明白这个版本控制器到底是什么意思,现在略微有了解,这是对项目代码的管理,给你一个控制代码,和吃后悔药的地方,而且如果你只是想看看自己的代码开发的流程,并且希望能够及时发现错误,使用GitHub是十分方便、易用的。 如果不使用GitHub,为了不断的备份代码,以免在出错的时候能够及时还原,就会出现下面这个情况。 在实现一个模块后,就会comm+c,comm+v的这样最原始的备份,出现很多的文件夹,而且时间久了也会忘记具体每个文件夹之间的变化... 阅读全文
posted @ 2014-01-05 11:46 墨_守 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 基本概念 始终返回一个实例,即一个类始终只有一个实例创建单例设计模式的基本步骤 声明一个单件对象的静态实例,并初始化为nil 创建一个类的类方法,生成一个该类的实例,当且仅当这个类的实例为nil时 覆盖allocWithZone:方法,确保在直接分配和初始化对象时,不会产生另一个对象 实现NSCopying协议,覆盖retain,reatinCount方法,以此确保单例的状态(非ARC,还要覆盖release和autorelease) 在多线程的环境中,注意使用@synchronized关键字,确保静态实例被正确的创建和初始化实例代码:User.h#import @interf... 阅读全文
posted @ 2014-01-04 11:26 墨_守 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 当触发事件发生时,发送通知出去示例代码: 当孩子睡眠不好的时候,就会发送通知告诉父亲,孩子快要醒来了Child.h#import #define CWSTR @"child wake"@interface Child : NSObject@property(nonatomic,assign)NSInteger sleep;@endChild.m#import "Child.h"@implementation Child-(id)init{ if (self = [super init]) { _sleep = 100; [NSTimer schedule 阅读全文
posted @ 2014-01-04 10:20 墨_守 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 基本概念 cocoa中提供NSPredicate类,指定过滤器的条件。将符合条件的对象保留下来。创建谓词示例代码://创建谓词,设置一个条件 //判断是否满足条件 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age > 20"]; for (Person *per in arr) { //表示指定对象是否满足谓词条件 BOOL ret = [predicate evaluateWithObject:per]; ... 阅读全文
posted @ 2014-01-03 11:10 墨_守 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 基本概念 键值观察是一种使对象获取其他对象的特定属性变化的通知机制。 控制器层的绑定技术就是严重依赖键值观察获得模型层和控制器层的变化通知的,对于不依赖控制器层类的应用程序,键值观察提供了一种简化的方法实现检查器并更新用户的界面值。 与NSNotification不同,键值观察并没用所谓的中心对象来为所有观察者提供变化通知。取而代之的,当有变化发生时,通知被直接发送至处于观察状态的对象,NSObject提供这种基础的键值观察方法。 你可以观察任意对象的属性,包括简单属性,对一或对多关系。对多关系的观察者将会被告知发生变化的类型,也就是任意发生变化的对象。 键值观察为所有对象提供自动观... 阅读全文
posted @ 2014-01-02 21:39 墨_守 阅读(269) 评论(0) 推荐(0) 编辑
摘要: KVC(KeyValueCoding)的基本概念 KVC是一个用于间接访问对象属性的机制,使用该机制不需要调用存取方法和变量实例就可以访问对象属性 KVC方法在obj-c非正式协议NSKeyValue’Coding中被声明,默认的实现方法由NSObject提供 KVC支持带有对象值的属性,同时也支持纯数值类型和结构,非对象参数和返回类型会背识别并自动封装、解封设置和访问(键值访问) KVC中的基本调用包括- (id)valueForKey:(NSString *)key;和- (void)setValue:(id)value forKey:(NSString *)key;这两个方法,他... 阅读全文
posted @ 2014-01-02 13:07 墨_守 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 协议的基本概念协议的声明看起来比较类似一个类的接口,不同的是协议没有父类也不能定义实例变量。协议是一种特殊的程序设计结构,用于声明专门被别的类实现的方法,协议在以下场合非常有用:需要由别的类实现的方法声明未知类的接口两个类之间的通信协议的基本特点协议可以被任何类实现的方法协议本身不是类,它使定义了一个其他类可实现的接口类目也可以采用协议协议中的关键字@required:表示必须强制实现的方法@optional:表示可以有选择性的方法代理设计模式的基本概念通俗来讲,代理就让别人替自己完成一件事情代理是指一个对象提供机会对另一个对象中的行为发生变化时做出的反应。代理设计模式的基本思想——两个对象协 阅读全文
posted @ 2014-01-01 11:51 墨_守 阅读(475) 评论(0) 推荐(0) 编辑
摘要: control+comm+上/下 切换.h和.m文件comm+[ 整行左移comm+] 整行右移shift+方向键 选中某处代码shift+comm+方向键 整行选中 按住alt(option)为单词选中 阅读全文
posted @ 2013-12-31 12:09 墨_守 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 类目的基本概念:如果有封装好的一个类,随着程序功能的增加,需要在类中增加一个方法,那我们就不必在那个类中做修改或者再定义一个子类,只需要在用到那个方法时添加一个该类的类目即可.1.在类目定义的方法中,会成为原始类的一部分,与其他方法的调用没有区别2.通过给父类定义类目方法,其子类也会继承这些方法.如果子类添加类目方法,父类则不会拥有子类的类目方法.类目方法的应用:对现有类的扩展:在类目中增加的方法会被子类所继承,而且运行时跟其他的方法没有区别作为子类的替代手段:不需要定义和使用一个子类,你可以通过类目直接向已有的类里增加方法对类中的方法归类:利用category把一个庞大的类划分为小块来分别进 阅读全文
posted @ 2013-12-31 11:51 墨_守 阅读(603) 评论(0) 推荐(0) 编辑