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内存管理教程和原理剖析(三)@property (retain)和@synthesize的默认实现

iPhone/Mac Objective-C内存管理教程和原理剖析(三)@property (retain)和@synthesize的默认实现 Posted on 2010-03-08 00:37 ...
  • andypan1314
  • andypan1314
  • 2011年06月01日 17:06
  • 533

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

三 @property (retain)和@synthesize的默认实现 在这里解释一下@property (retain) ClassB* objB;和@synthesize objB;背后到底...
  • angeli_snow
  • angeli_snow
  • 2013年10月23日 17:16
  • 453

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

三 @property (retain)和@synthesize的默认实现 在这里解释一下@property (retain) ClassB* objB;和@synthesize objB;背后到底...
  • PZ0605
  • PZ0605
  • 2014年05月13日 08:49
  • 482

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

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

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

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

objective-c中的@property,@synthesize等简易用法(八)

holydancer原创,如需转载,请在显要位置注明: 转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/deta...
  • holydancer
  • holydancer
  • 2012年03月15日 10:32
  • 13094

Objective-C 内存管理retain和release

OC使用引用计数来管理内存,每一个继承NSObject的对象,内部都维护了一个引用计数器retainCount,当对象创建时(调用alloc或者new)引用计数器会+1, 手动调用retain()方法...
  • oktears
  • oktears
  • 2014年11月12日 13:30
  • 1531

Objective-C内存管理详解——ARC和垃圾回收机制

ARC的基本概念:       ARC自动引用计数,当你在编译程序时提供自动管理内存的功能,它会自动加入内存的控制代码,控制对象的生命周期。这是在iOS4以后引入的技术。此时你在代码中使用releas...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2015年10月14日 11:23
  • 2913

Objective-C内存管理教程和原理剖析(三)

@property (retain)和@synthesize的默认实现 在这里解释一下@property (retain) ClassB* objB;和@synthesize objB;背后到底...
  • scbeyondpast
  • scbeyondpast
  • 2014年05月09日 19:20
  • 253

Objective-C内存管理教程和原理剖析(三)

Objective-C内存管理教程和原理剖析(三) 2013-04-11 14:32 zakowey oschina 字号:T | T 初学Objective-C的朋友都有一...
  • u014766462
  • u014766462
  • 2014年12月16日 11:56
  • 384
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iPhone/Mac Objective-C内存管理教程和原理剖析 【三、@property (retain)和@synthesize的默认实现】
举报原因:
原因补充:

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