1:retain返回一个id类型的值,通过这种方式,可以嵌套执行带有其他消息带有参数的保留调用,增加对象的保留计数器值,并要求对象执行某种操作,例如:[[car retain] setTire:tire atIndex:2];
2:对象的所有权: 拥有对象的实体需要对该对象进行清理。
2.1 一个实体拥有一个对象。所有权是实体。
2.2 一个对象拥有多个对象。所有权是一个对象。
2.3 如果一个函数创建了一个对象 ,则所有权是一个函数。
有以上的所有权主要是确保对象不再被使用时,能够及时的接收到release信息,从而被释放掉。
如果有一个函数创建了一个对象(次对象),并且这个对象(主对象)被次对象拥有,在主对象对次对象进行保留。在函数中对(次对象)进行释放。当主对象不需要使用次对象时,再释放掉。详见Objective-c,第9章133page。
正确的设置get和set的代码,如图: