2011-02-22 56 views
0

处理这种情况的正确方法是什么?带有可能无法执行NSCoding的属性的NSCoding类

我想在我的Foo类中实现NSCoding,但它有一个名为bar类型为“id”的泛型属性。

@interface Foo : NSObject <NSCoding> { 
    id bar; 
} 

@property (nonatomic, retain) id bar; 

@end 

如果该属性不会发生实施NSCoding,我不希望我的编码对象的表述不完整,所以我怎么不能正常(记住,我的对象可能被编码为更大图的一部分)?

像NSDictionary这样的类没有要求他们的内容实现NSCoding,但他们这样做,所以必须有一种方法来处理这种情况?

回答

0

是;要么不编码bar或编码代表bar的东西。

如果您尝试对包含不符合编码的对象的集合类实例进行编码,它将会自动删除。

+0

我想我可以测试它,但它会以什么方式barf?无效的选择器?那么,为什么NSDictionary和其他集合不会只接受id为的对象呢?或者如果他们不这样做,他们为什么不提及添加不合规的对象会导致文档崩溃? – DougW 2011-02-23 16:57:34

+0

对不起还有一个问题。 “代表酒吧的东西”是什么意思?你的意思只是一个空的占位符?谢谢。 – DougW 2011-02-23 16:58:07