其次,关于这个_book = [book retain];原来不关心内存的时候,写的setter方法就是
- (void)setBook:(Book *)book
{
_book = book;
}
这个你应该还记得吧,那加上retain返回book是一样的啊。
所谓的_book指向book是不好理解的。这个你可以理解为赋值操作就行了。就是把对象book的内容都赋值给_book。
如果硬要理解_book指向book,那你理解为,对象名其实都是指针。当初新建book对象的时候,book就指向一个放着该对象的内存,计数器为1,那_book = book;就是让_book也指向这个放着该对象的内存.这样该对象就有两个指针指向它,所以计数器要加1为2.
这些其实你可以不用纠结,以后setter方法都是@property代替。oc有ARC机制,基本不需要考虑内存管理。 |