对象初始化

来源:互联网 发布:物业软件哪个好 编辑:程序博客网 时间:2024/04/28 10:18

在oc中使用alloc后,会分配到一块内存块,同时这块内存块会被清零,所以初始化函数init是不需要再做置零的操作的。

 

在oc中,应该在alloc后就调用初始化函数init,使用new可以达到这个效果,但new不是oc的风格。

 

对象在init时,应该先使用其父类的init,然后再使用自己的init行为。而对象在dealloc时则相反,先是自己dealloc,然后才是

父类dealloc。

 

可能会重载多个init方法,这时应该有一个指定初始化函数(这个函数应该实现所有实例变量的初始化),然后其它init方法均调

用这个指定初始化函数。

 

对象在init时,务必把super的init返回值赋值给self,我们最终使用的对象是init返回的对象(而分配到的对象可能与init返回的

对象不相同)。

 

在c++中,有一种习惯的做法:在构造函数中new出所有成员对象,然后在析构函数中delete所有成员对象。这个做法操作简单,但

很不灵活。比如程序在启动时需要new出所有必需的对象,如果这些必需对象的构造函数里面又new了一些其它的非必需立即就创建

的对象(甚至这些成员对象在构造的时候做了一些io或网络的操作),这就很可能严重影响到程序的启动速度。
所以我比较主张,在构造函数和析构函数里面不要new或delete其它的成员变量,同时提供相应的Create/Destroy函数,让对象在需

要的时候创建或销毁其成员变量。


在oc中也一样,你可以在init中new出所有的实例变量,但也可以在需要的时候再去做这样的事(主张使用这种方式)。

原创粉丝点击