我是Objective-C的新手,我发现有效的Objective-C代码的语法难以理解。例如,通常使用MyClass * myObject = [[MyClass alloc] init]分配和初始化所有对象;句法。但是,在下面的示例中,在创建该类的初始化对象之前,在“NSKeyedArchiver”类上调用一个方法。同样的情况发生在下一行代码中,其中在“NSUserDefaults”上调用方法而不创建分配/初始化对象。这怎么可能?
NSData *bandObjectData = [NSKeyedArchiver archivedDataWithRootObject:self.bandObject];
[[NSUserDefaults standardUserDefaults] setObject:bandObjectData forKey:bandObjectKey];
谢谢!
答案 0 :(得分:1)
这些被称为类方法,并且它们不需要执行类的实例,因为它们不依赖于实际的类实例。实际上,您可以通过使用+符号(而不是符号)
来为方法创建自己的方法当我们不依赖于类的实例时,我们通常使用类方法。因此,在您的示例中,NSKeyedArchiver类不需要创建自身的实例来存档数据。同样,您可以在不创建NSUserDefaults对象的情况下获取标准NSUserDefault。
当对象本身需要改变其状态时,使用其他类型的方法(实例方法)。