Ios 使用init和标准方式创建对象有什么区别?

Ios 使用init和标准方式创建对象有什么区别?,ios,objective-c,Ios,Objective C,我的困惑来自下面的代码。主要区别是什么?什么时候使用第一个示例而不是另一个?两者都可以创建对象,但我不理解它们之间的区别 -(id)initWithCoder:(NSCoder *)aDecoder { if ((self = [super init])) { self.text = [aDecoder decodeObjectForKey:@"Text"]; self.checked = [aDecoder decodeBoolForKey:@"Che

我的困惑来自下面的代码。主要区别是什么?什么时候使用第一个示例而不是另一个?两者都可以创建对象,但我不理解它们之间的区别

-(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];

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

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


参考资料:

第一个是特定init方法的实现。第二个是调用另一个更简单的init方法。第一个是初始化对象。第二个是要求被调用方初始化对象。问题的标题有点让人困惑-
init
是标准方式,我想说。你是在问
initWithCoder:
的目的是什么吗?为什么会被否决?这是一个完全正确的问题。@OralB我也在想同样的事情。也许我不够清楚?但这就是我提供这些例子的原因。不管怎样,我还是得到了我的帮助!谢谢,这个链接比我下面的教程解释帮助了我很多。很高兴能帮上忙:)祝你好运!