iPhone/Mac Objective-C内存管理教程和原理剖析 【三、@property (retain)和@synthesize的默认实现】

转载 2012年03月29日 16:40:54

 @property (retain)@synthesize的默认实现

在这里解释一下@property (retain) ClassB* objB;@synthesize objB;背后到底发生了什么(retain property的默认实现)property实际上是gettersetter,针对有retain参数的property,背后的实现如下(请参考附件中的memman-getter-setter.m,你会发现,结果和memman-property.m一样):

@interface ClassA : NSObject

{

         ClassB *objB;

}

 

-(ClassB *) getObjB;

-(void) setObjB:(ClassB *) value;

@end

 

@implementation ClassA

-(ClassB*) getObjB

{

         return objB;

}

 

-(void) setObjB:(ClassB*) value

{

         if (objB != value)

         {

                   [objB release];

                   objB = [value retain];

         }

}

setObjB中,如果新设定的值和原值不同的话,必须要把原值对象release一次,这样才能保证retain count是正确的。

由于我们在class内部retain了一次(虽然是默认实现的),所以我们要在dealloc方法中release这个成员变量。

-(void) dealloc

{

         [objB release];

         [super dealloc];

}

iPhone/Mac Objective-C内存管理教程和原理剖析

版权声明 此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com/,且...
  • lx31433
  • lx31433
  • 2014年08月30日 22:30
  • 167

iPhone/Mac Objective-C内存管理教程和原理剖析

版权声明 此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com/,且...

iPhone/Mac Objective-C内存管理教程和原理剖析(四)系统自动创建新的autorelease pool

iPhone/Mac Objective-C内存管理教程和原理剖析(四)系统自动创建新的autorelease pool Posted on 2010-03-08 21:14 Vince Yuan ...

iPhone/Mac Objective-C 内存管理教程和原理剖析

iPhone/Mac Objective-C 内存管理教程和原理剖析 前言 初学 objectice-C 的朋友都有一个困惑,总觉得对 objective-C 的内存管理机制...

iPhone/Mac Objective-C内存管理教程和原理剖析(一)

版权声明 此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com/,且...

iPhone/Mac Objective-C内存管理教程和原理剖析 【二、口诀与范式】

二 口诀与范式 1           口诀。 1.1          谁创建,谁释放(类似于“谁污染,谁治理”)。如果你通过alloc、new或copy来创建一个对象,那么你必须调用relea...

iPhone/Mac Objective-C内存管理教程和原理剖析

版权声明 此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com/,且...

iPhone/Mac Objective-C内存管理教程和原理剖析(四)系统自动创建新的autorelease pool

版权声明 此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com/,且...

iPhone/Mac Objective-C内存管理教程和原理剖析(二)口诀与范式

iPhone/Mac Objective-C内存管理教程和原理剖析(二)口诀与范式 Posted on 2010-03-08 00:35 Vince Yuan 阅读(1664) 评论(1) 编辑 收...

iPhone/Mac Objective-C 内存管理教程和原理剖析 [转]

一 基本原理  [转自]http://blog.sina.com.cn/s/blog_a2c098b50101gtu4.html Objective-C 的内存管理机制与.Net/Java 那种...
  • xlsn0w
  • xlsn0w
  • 2016年01月14日 22:14
  • 1378
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iPhone/Mac Objective-C内存管理教程和原理剖析 【三、@property (retain)和@synthesize的默认实现】
举报原因:
原因补充:

(最多只允许输入30个字)