objective-C基础教程(第2版)-第十章杂记

对象初始化

创建对象的两种方法:

[类名 new]
[[类名 alloc] init] // cocoa惯例

对象的创建分为对象内存空间分配和初始化两个过程,对一个类发送alloc将会为类分配空间同时将内存区域全部初始化为0(int初始化为0, 指针初始化为nil),刚完成分配的对象应当在初始化完成后使用避免出现一些bug
初始化方法init返回的对象和分配阶段返回的对象可能不同因此在使用上采用[[类名 alloc] init]而不是Car *car = [Car alloc]; [car init];

// 初始化方法模板
(id) init {
	if (self = [super init]) { // 将超类初始化完成后的对象赋予self
		//...
	}
	return (self)
}

在这里插入图片描述
在初始化方法中,可能有些自定义属性对象不一定用的上则不必在初始化方法中就一定要将对象创建,可以通过惰性求值的方式等到调用者实际用到时在创建

lazy evaluation(惰性求值)
在init函数中没有进行创建,当在使用时先判断是否为空,如果为空则创建,这样会节省内存,提高效率

除了init外类中可以自定义其他的初始化函数便于对象的初始化赋值,但当一个父类存在多个初始化函数时子类不可能保证重写每一个父类的初始化函数,因此出现了指定初始化函数的概念,即类中某个初始化方法被指派为指定初始化函数,该类使用的初始化方法都使用指定初始化函数进行初始化操作。

然后子类只需重写指定初始化函数,当然不重写也行直接在自己的初始化函数中调用父类的指定初始化函数进行初始化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值