解归档:
- 对象实现NSCoding协议,实现两个方法
- (instancetype)intiWithCoder:(NSCoder *)aDecoder {
if (self = [ super init]) {
self.something = [aDecoder decodeObjectForKey:@"ksomething";
return self
}
- (void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:self.something forKey:@"ksomething";
}
归档
[NSkeyedArchiver archiveRootObject: someObj toFile: filePath];
解归档
SomeObject *something = [NSKeyedUnarchiver unarchiveObjectWithFile: filePath];
NSArrary & NSMutableArray
- 不可变数组
//得到一个不可变数组
NSArray *array = @[@11,@22,@33];
//得到一个不可变数组,他们内存地址是一样的
NSArray *array2 = array.copy;
//得到一个可变数组,但是内存地址不一样
NSMutableArray *mutableArr = array.mutablecopy;
- 可变数组
//得到一个可变数组
NSMutable *mutableArray1 = @[@11,@22].mutablecoty;
//得到一个不可变数组,他们两个的内存地址不同
NSArray *array = mutableArray1.copy;
//得到一个可变数组,内存地址相同
NSMutableNSArray *array = mutableArray1.mutablecopy;
在OC中extension里增加一个可变数组实例变量的时候,记得使用它的时候先mutableArr = [NSMutableArray array]
或者mutableArr = @[].mutablecopy
赋空
网友评论