摘要:
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(垃圾回 阅读全文
摘要:
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 阅读全文
摘要:
原文地址目录例子空格与格式空格与制表符行宽方法声明与定义方法调用@public与@private异常协议命名文件名Objective-C++类名分类名Objective-C方法名变量名注释文件注释声明注释实现注释对象所有权Cocoa与Objective-C特性成员变量应该为@private指明指定的初始化器重写指定的初始化器避免使用+new保持公有的API尽量简单#import与#include使用根框架创建对象时尽量使用autoreleaseAutorelease之后retainDealloc中应该按声明的顺序处理成员变量Setters中对NSString进行copy避免抛出异常nil的检查 阅读全文
摘要:
Objective-C提供了几种常用的数据保存方案属性列表对象序列化和反序列化SQLiteCore Data属性列表plist中可存储的类型:NSArray, NSDictionary, NSString, NSData, NSDate, NSNumber,最常用的根类型是NSArray,NSDictionary这些类提供了读和写的方法, 同样提供的工厂方法- (id) initWithContentsOfFile : (NSString *) filePath;- (void) writeToFile: (NSString *) filePath atomically: ... 阅读全文
摘要:
谓词定义了真值条件,对象通过谓词进行筛选,判断是否与条件相匹配。@interface NSPredicate : NSObject { void *_reserved;}// Parse predicateFormat and return an appropriate predicate+ (NSPredicate *)predicateWithFormat:(NSString *)predicateFormat argumentArray:(NSArray *)arguments;+ (NSPredicate *)predicateWithFormat:(NSString *)pr... 阅读全文
摘要:
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命名的 阅读全文
摘要:
类名必须是唯一的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 阅读全文
摘要:
大多数错误都可以用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... 阅读全文