2012-03-28 40 views
0

我用下面的代码,它抛出一个错误[的NSKeyedArchiver的init]:不能使用-init初始化的NSKeyedArchiver INIT不叫

代码: -

NSKeyedArchiver *a=[[NSKeyedArchiver alloc] init]; 

回答

2

这是因为的NSKeyedArchiver类没有按没有“简单的香草”初始化方法。你必须使用initForWritingWithMutableData:

+0

但是,它的超类NSObject具有该方法 – andyPaul 2012-03-28 04:32:19

+1

如果你看看NSObject文档,它说:“NSObject类中定义的init方法没有初始化;它只是返回self”子类应该实现它们自己的初始化方法 – rdelmar 2012-03-28 04:36:00

+0

另外,我认为一些类有一些私有的初始化方法,它们只是用一些默认值调用类的指定初始化方法。也许NSKeyedArchiver没有一个。例如,你可以使用init初始化一个NSView而不是initWithFrame :,它会给你一个带有zeroRect的视图,所以我猜测在内部,当你用init初始化时,NSView会调用initWithFrame:NSZeroRect。 – rdelmar 2012-03-28 04:47:03