使用init与标准方式创建对象的区别是什么?

时间:2013-05-22 15:43:52

标签: ios objective-c

我的困惑来自下面的代码。主要区别是什么,何时使用第一个例子而不是另一个例子?两者都创建对象,但我不明白它们的区别。

-(id)initWithCoder:(NSCoder *)aDecoder  {
    if ((self = [super init])) {
        self.text = [aDecoder decodeObjectForKey:@"Text"];
        self.checked = [aDecoder decodeBoolForKey:@"Checked"];
    }
    return self;
}

比较说:

NSString *string = [[NSString alloc] init];

1 个答案:

答案 0 :(得分:1)

在第一个实例中,您正在指示类/子类关于如何在类/子类的实现(.m文件)中启动时的行为,而在第二个示例中,您正在将现有对象启动为变量

希望这会有所帮助。如果需要,我会很乐意进一步澄清。

参考:http://developer.apple.com/library/ios/#Documentation/General/Conceptual/CocoaEncyclopedia/Initialization/Initialization.html