你要知道的NSCopying、NSCoding协议及对象序列化和反序列化都在这里
转载请注明出处 http://blog.youkuaiyun.com/u014205968/article/details/78260402
本篇文章主要讲解NSCopying
协议,以及NSCoding
协议实现对象的序列化和反序列化,实际开发中如果要自己造轮子这两个协议还是比较重要的。
NSCopying协议
Foundation
框架中为我们提供的基础的类基本都实现了NSCopying
协议,因此,我们可以使用copy
方法用来获取对象的一个不可变副本对象,可以使用mutableCopy
方法用来获取对象的一个可变副本对象,当需要对自定义类调用copy
或mutableCopy
方法就需要实现NSCopying
协议。首先我们看一下NSString
类的复制操作。有如下代码:
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *string = @"Jiaming Chen";
NSString *copyString = [string copy];
NSMutableString *mutableCopyString = [string mutableCopy];
//输出: 0x1000020a8 0x1000020a8 0x10058ccb0
NSLog(@"%p %p %p", string, copyString, mutableCopyString);
NSMutableString *mutableString = [[NSMutableString alloc] initWithString:@"Jiaming Chen"];
NSString *copyMutableString = [mutableString copy];
NSMutableString *mutableCopyMutableString = [mutableString mutableCopy];
//输出: 0x100403f90 0x100403ef0 0x100403fd0
NSLog(@"%p %p %p", mutableString, copyMutableString, mutableCopyMutableString);
NSString *str = @"Jiaming Chen";
NSString *copyStr = [str copy];
NSMutableString *mutableCopyStr = [str mutableCopy];
//输出: 0x100404060 0x7fffa86ddd40 0x1004040a0
NSLog(@"%p %p %p", str, copyStr, mutableCopyStr);
NSString *errorStr = @"Jiaming Chen";
NSMutableString *errorMutableStr = errorStr;
NSString *copyE