我正在将一些基于Objective C的对象存储到NSuserdefaults中。从NSuserDefaults中取消归档数据的正确方法是什么?
要从NSuserDefaults检索数据,我使用initWithCoder方法。
我已经看到了这两种不同的实现:
实现1个
- (id)initWithCoder:(NSCoder *)decoder {
self = [super init];
if (self != nil){
//decode properties, other class vars
self.variable = [decoder decodeObjectForKey:@"variable"];
}
return self;
}
实现2
- (id)initWithCoder:(NSCoder *)decoder {
self = [[CustomClass alloc] init];
if (self != nil){
//decode properties, other class vars
self.variable = [decoder decodeObjectForKey:@"variable"];
}
return self;
}
这是正确的方法是什么?
这两者有什么区别?
initWithCoder是NSCoding协议的成员。 NSObject没有实现NSCoding(你必须为你自己的类明确声明它),所以你不能从直接派生自NSObject的类调用[super initWithCoder:decorder]。 – interrupt 2013-09-30 03:16:52