每天花30分钟看苹果的官方文档。
ARC只对可保留的对象指针(ROPs)有效。可保留的对象指针主要有以下三种:
(1):代码块指针
(2):Objective-C对象指针
(3):通过_attribute_((NSObject))类型定义的指针。
桥接转换(bridge cast)的三种类型:
(1):(_bridge类型)操作符:这种类型的转换会传递指针,但不会传递它的所有权。
(2):(_bridge_retained类型)操作符:使用这种类型,所有权会转移到non-ROP上。
(3):(_bridge_transfer类型)操作符:这种类型转换与上一个相反,它把所有权转交给ROP。
不能对ARC管理的对象调用的管理方法:
retain,retainCount,release,autorelease,dealloc。
不能对ARC对象进行重写的方法:
retain,retainCount,release,autorelease。
Cocoa要求所有的异常必须是NSException类型的异常。
异常的所有关键字都是以@开头的,以下是它们的各自作用:
(1)@try:定义用来测试的代码块以决定是否要抛出异常。
(2)@catch():定义用来处理已抛出异常的代码块。接收一个参数,通常是NSException类型,但也有可能是其他类 型。
(3)@finally:定义无论是否有抛出异常都会执行的代码块,这段代码总是会执行的。
(4)@throw:抛出异常。
程序会创建一个NSException实例来抛出异常,并会使用以下两种技术之一:
(1):使用“@throw异常名;”来抛出异常;
(2):向某个NSException对象发送raise消息。
@finally是在@throw发生之前调用的。OC的异常机制与C++的异常机制兼容。
当对象接受到一条autorelease消息时,其保留计数器的值并不会发生改变。该对象只是被放入了NSAutoreleasePool当中。Cocoa有三个关于对象及其保留计数器的规则:
(1):如果使用new、alloc或copy操作获得了一个对象,则该对象的保留计数器的值为1。
(2):如果通过其他方法获得一个对象,则假设该对象的保留计数器的值为1,而且已经被设置为自动释放。
(3):如果保留了某对象,则必须保持retain方法和release方法的使用次数相等。