摘要: 创建型模式创建型模式抽象了实例化过程。它们帮助一个系统独立于如何创建、组合、表示它的那些对象。类创建型模式使用继承改变被实例化的类,对象创建型模式将实例化委托给另一个对象。它们都将关于该系统使用哪些具体的类的信息封装起来。它们隐藏了这些类的实例是如何被创建和放在一起的。类创建型模式:Factory Method:定义一个用于创建对象的接口,让子类决定将哪一个类实例化,它使一个类的实例化延迟到其子类。对象创建型模式:Abstract factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。Builder:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不 阅读全文
posted @ 2013-08-10 10:24 万有引用 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 每一个描述了一个在我们周围不断重复发生的问题以及问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。模式要素:模式名称。模式的一个助词名。问题。模式应用的场景。解决方案。描述了设计的组成部分,它们之间的相互关系及各自的职责和协作方式。效果。描述了模式应用的效果及使用模式应权衡的问题。模式分类按目的原则,可分为创建型、结构型、行为型。创建型与对象的创建有关;结构型处理类或对象的组合;行为型对类或对象怎样交互和怎样分配职责进行描述。按范围原则,可分为类模式和对象模式。客户请求是使用对象执行操作的唯一方法,操作又是对象改变内部数据的唯一方法。型构:对象声明的每一个操作名、参数和返 阅读全文
posted @ 2013-08-10 09:28 万有引用 阅读(274) 评论(0) 推荐(0) 编辑
摘要: Objective-C的对象都是动态创建的,Cocoa 采用了引用计数的技术进行对象生存周期的管理,对象新创建时引用计数为1,发送remain消息后对象引用计数+1,发送release消息后对象引用计数-1,当对象引用计数为0时,Objective-C运行会向对象发送dealloc消息进行销毁对象回收内存。注意:自己可以重写dealloc方法,但不要自己调用它。Objective-C提供了三种内存管理方式:manual retain-release(MRR,手动管理),automatic reference counting(ARC,自动引用计数),garbage collection(垃圾回 阅读全文
posted @ 2013-08-09 16:35 万有引用 阅读(323) 评论(0) 推荐(0) 编辑
摘要: NSMutableArray *someObject = [NSMutableArray array];NSLog(@"%s:%d someObject=%@", __func__, __LINE__, someObject);[someObject addObject:@"foo"];NSLog(@"%s:%d someObject=%@", __func__, __LINE__, someObject); Table 1Preprocessor macros and for logging in C/C++/Objective-C 阅读全文
posted @ 2013-08-09 15:41 万有引用 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 原文地址目录例子空格与格式空格与制表符行宽方法声明与定义方法调用@public与@private异常协议命名文件名Objective-C++类名分类名Objective-C方法名变量名注释文件注释声明注释实现注释对象所有权Cocoa与Objective-C特性成员变量应该为@private指明指定的初始化器重写指定的初始化器避免使用+new保持公有的API尽量简单#import与#include使用根框架创建对象时尽量使用autoreleaseAutorelease之后retainDealloc中应该按声明的顺序处理成员变量Setters中对NSString进行copy避免抛出异常nil的检查 阅读全文
posted @ 2013-08-09 13:12 万有引用 阅读(435) 评论(0) 推荐(0) 编辑
摘要: Objective-C提供了几种常用的数据保存方案属性列表对象序列化和反序列化SQLiteCore Data属性列表plist中可存储的类型:NSArray, NSDictionary, NSString, NSData, NSDate, NSNumber,最常用的根类型是NSArray,NSDictionary这些类提供了读和写的方法, 同样提供的工厂方法- (id) initWithContentsOfFile : (NSString *) filePath;- (void) writeToFile: (NSString *) filePath atomically: ... 阅读全文
posted @ 2013-08-09 10:47 万有引用 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 谓词定义了真值条件,对象通过谓词进行筛选,判断是否与条件相匹配。@interface NSPredicate : NSObject { void *_reserved;}// Parse predicateFormat and return an appropriate predicate+ (NSPredicate *)predicateWithFormat:(NSString *)predicateFormat argumentArray:(NSArray *)arguments;+ (NSPredicate *)predicateWithFormat:(NSString *)pr... 阅读全文
posted @ 2013-08-09 10:14 万有引用 阅读(1734) 评论(0) 推荐(0) 编辑
摘要: KVC提供了以字符串的方式访问对象的数据,由于要解析字符串,所以性能有损耗- (id) valueForKey: (NSString *) key;- (void) setValue: (id) value forKey: (NSString *) key;- (id) valueForKeyPath: (NSString *) keyPath;- (void) SetValue: (id) value forKeyPath: (NSString *) keyPath;Objective-C在运行时使用元数据进入对象查找相关的信息,valueForKey:首先,查找以-key或isKey命名的 阅读全文
posted @ 2013-08-09 09:46 万有引用 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 类名必须是唯一的Objective-C中没有提供命名空间,所以公开的类一般都添加了前缀来避免类名的冲突PrefixFrameworkNSFoundation (OS X and iOS) and Application Kit (OS X)UIUIKit (iOS)ABAddress BookCACore AnimationCICore Image自定义的类应该使用三字母前缀对象创建约定NSMutableArray *array = [[NSMutableArray alloc] init];NSMutableArray *array = [NSMutableArray new];NSMuta 阅读全文
posted @ 2013-08-09 09:06 万有引用 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 大多数错误都可以用NSError来进行描述- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;有时候是按引用传递NSError的- (BOOL)writeToURL:(NSURL *)aURL options:(NSDataWritingOptions)mask error:(NSError **)errorPtr; NSError *anyError; BOOL success = [receivedData writeTo... 阅读全文
posted @ 2013-08-09 08:54 万有引用 阅读(315) 评论(0) 推荐(0) 编辑