objective-c – 如果我在-init中什么都不做,是否只是调用[MyClas
如果我有一个NSObject子类,它没有-init方法,或者在-init中根本不做任何事情,创建这两种方式的实例之间有什么不同:
MyClass *instance = [MyClass alloc]; MyClass *instance = [[MyClass alloc] init]; 我的意思是“不做任何事情” - (id)init { self = [super init]; if (self) { } return self; } 由于NSObject的-init方法本身什么也不做,我看不到有任何区别,但是当然建议是必须调用-init来正确准备一个对象. 这是
解决方法
MyClass *instance = [MyClass alloc]; MyClass *instance = [[MyClass alloc] init]; 技术上没有什么区别. 但是,这并不意味着您应该使用裸机分配来创建一个实例,原因有很多. 首先,这是事情的原则. Objective-C编码标准表示alloc应该始终遵循–init. 其次,它是关于一致性和代码维护的.当您将MyClass重构为某个类的子类时,会发生什么,指定的初始化程序实际上是关键的?一个讨厌的,很难弄清楚,bug是怎么回事. 相关性,请注意,由于类似的原因,新的使用已被淘汰.这使得重构繁琐(必须断开这个呼叫站点!),而且方便因素非常小. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |