《Objective-C程序设计(第四版)》读书笔记(四)

8.NSNumber (p336)


基本数据类型是无法存储在数组之类的集合中,所以在Foundation框架有一个专门处理各种数据类型的类,就是NSNumber,NSNumber其实是一个抽象类,负责封装一些数据对象,提供一些处理方法。

当数组存入一些NSNumber对象后,直接打印数组会发现输出的是那些NSNumber对象的值而并不是他们在内存中的地址。这说明了NSNumber类有自定义的description方法实现,而不是直接使用NSObject的方法。


9.区块的使用 (p356)

苹果公司加入的Block,同样他们也推荐使用Block,在很多方法中都可以使用区块来提升程序的性能。

比如排序时的比较方法,有两个Obj,比较按照他们名字进行比较,如果你已经写了一个compareName方法,那么就不要再在区块里调用了:

[array sortUsingComparator:
	^(id obj1, id obj2) {
		return [obj1 compareName: obj2];
}];

这样虽然能够运行,但是并没有提升性能,更好的方法是在区块中做更多的动作,才能使性能得到提升:

[array sortUsingComparator:
	^(id obj1, id obj2) {
		return [obj1.name compare: obj2.name];
}];


10.强变量 (p413)

自动引用计数(ARC)无疑是给开发者省下了很多气力在手工引用计数上。但是也有一些问题,比如说retain循环问题。

比如在一个父子视图中,父视图持有子视图的引用,同时子视图也持有父视图的引用。这种循环会引起问题。例如当父视图销毁时会如何处理。子视图对父视图的引用不再有效。实际上,视图引用到不存在的父视图会引起应用的崩溃。

所以就会有强引用,弱引用的诞生。

所有的对象变量默认都是强变量的,不需要先声明。

所有属性则不是,默认相当于assign,你可以为属性声明为strong,或者weak。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值