1
なくてもシリアライズされる理由:クラスは、私は、次のクラス使用していますNSCodingプロトコル
インポート私はまだNSCodingプロトコルを準拠せずに、このクラスをシリアル化することができます
@interface Person : NSObject
{
}
@property (nonatomic,copy) NSString *firstName;
@property (nonatomic,copy) NSString *lastName;
@end
@implementation Person
- (instancetype)initWithCoder:(NSCoder *)coder
{
self = [super init];
self.firstName = [coder decodeObjectForKey:@"firstName"];
self.lastName = [coder decodeObjectForKey:@"lastName"];
return self;
}
- (void)encodeWithCoder:(NSCoder *)coder
{
[coder encodeObject:self.firstName forKey:@"firstName"];
[coder encodeObject:self.lastName forKey:@"lastName"];
}
@end
を。次のコードは動作します。私の質問はなぜですか?あなたはこれらのメソッドを実装している -
// create a person
Person *person = [[Person alloc] init];
person.firstName = @"John";
person.lastName = @"Doe";
NSData *personData = [NSKeyedArchiver archivedDataWithRootObject:person];