并发性:
同步:
@synchronized(mutex,atomic){
//do
}
调度队列:
连续队列:FIFO,按顺序执行,管理内存 dispatch_queue_create
并发队列:FIFO,不要管理内存 dispatch_get_global_queue
主队列:同步方式,dispatch_get_main_queue
操作队列:
1.创建操作:NSInvocationOperation,NSBlockOperation,NSOperation的子类;
2.向队列中添加操作:NSOperation类的实例方法addOperation:或addOperationWithBlock:
文件加载与保存:
属性列表类:NSArray,NSDictionary,NSString,NSNumber,NSDate,NSData
NSDate:
NSDate *date1=[NSDate date];//当前日期
NSDate *date2=[NSDate dateWithTimeIntervalSinceNow:-(24*60*60)];//与当前时间间隔的日期
NSData:
const char *string = "Hi there, this is a C string!";
NSData *data = [NSData dataWithBytes: string length: strlen(string) + 1];
[data lenth];//获取长度
[data bytes];//字符串起始位置指针
写入和读取属性列表:
[phrase writeToFile: @"" atomically: YES];//写到文件(覆盖)
NSArray *phrase2 = [NSArray arrayWithContentsOfFile: @""];//从文件读出
编码对象:
@protocal NSCoding
- encodeWithCoder://实现这两个方法,实现对象与NSData的转换
- initWithCoder:
@end
并使用NSKeyedArchiver把对象归档到NSData中
+ archivedDataWithRootObject
+ unarchiveObjectWithData
KVC:
KVC可以实现自动装、开箱:取值时把标量放入对象,设值时从对象中取出标量,还可以实现NSString与NSNumber之间的自动转换。
- valueForKey://先查找-key或-isKey的getter方法,再找_key或key的实例变量,对象是数组时作用于所有元素
- setValue:forKey://先查找-setKey的setter方法,再找_key或key的实例变量,设置标量值要先装箱
//键路径
- valueForKeyPath:
- setValue:forKeyPath:
@"engine.horsepower":成员变量engine的成员变量horsepower
//整体操作
@"tires.pressure":成员变量tires数组中每个对象的pressure
//快速运算,自动遍历数组
@"cars.@count"
@"cars.@sum.mileage"
@"cars.@avg.mileage"
@"cars.@min.mileage"
@"cars.@max.mileage"
@"cars.@distinctUnionOfObjects.make"
//批处理
- dictionaryWithValuesForKey://从key数组获取字典
- setValuesForKeysWithDictionary://根据字典给key设值
//nil
-setNilValueForKey://重写此方法,即可用nil进行赋值
-setValue:forUndefinedKey://重写此方法,处理未定义的键