`
javasogo
  • 浏览: 1772967 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

版权声明

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

版本1.1发表于2010-03-08

@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];

}

示例代码文件链接:http://files.cnblogs.com/VinceYuan/objective-c-memman.zip

分享到:
评论

相关推荐

    Objective-C内存管理课件.doc

    Objective-C内存管理课件.docx ,assign,retain,copy

    Objective-c解析XML封装

    @property (nonatomic, retain) NSMutableString *currentResult; @property (nonatomic, retain) NSMutableDictionary *map; @property (nonatomic, retain) NSMutableArray *list; -(NSMutableDictionary *)...

    Google Objective-C Style Guide 中文版

    Google Objective-C Style Guide 中文版 目录 例子 空格与格式 空格与制表符 行宽 方法声明与定义 方法调用 @public与@private 异常 协议 命名 文件名 Objective-C++ 类名 分类名 Objective-C方法名 变量名 注释 ...

    objective-c启用ARC时的内存管理

    在objective-c中,内存的引用计数一直是一个让人比较头疼的问题。尤其是当引用计数涉及到arc、blocks等等的时候。似乎ARC的出现只是让我们解放了双手,由于底层实现依然依赖引用计数,所以开启ARC后,只有对引用计数...

    @property中的retain,copy,assign区别

    @property中的retain,copy,assign区别

    千锋OC源码

    OC语言教程-第4讲-内存管理2-retain点语法 OC语言教程-第5讲-内存管理3-MyArray OC语言教程-第6讲-内存管理4-AutoreleasePool OC语言教程-第7讲-协议 OC语言教程-第8讲-协议代理设计模式 OC语言教程-第9讲-Category...

    复杂XML的解析及组装

    在实际的项目中,IPhone应用程序会存在很多与服务器之间的数据交互的地方,XML是首选方案。 此包可以解决XML文件的解析、对象转化为XML字符串的问题。 1 通过调用解析类,可以将XML的DATA数据转换为XmlNode对象,...

    object c/iphone 开发 试题

    ②实现文件(.m):包含这些方法的实现代码,以及对别的类不可见的,仅与实现本身相关的局部变量的声明和使用。 8.九宫格解法原理;(右上解法) 左出右写入、右出左写入、上出下写入、下出上写入、重排置下; 9.iphone...

    DynamicTableGenerator-iOS:一个 SettingsData Entry 表单自动生成工具

    DynamicTableGenerator 是一个 Objective-C 静态库,可以快速简单地创建表格视图表单、设置面板和任何形式的用户输入。 #### ###对象/表单设置 @interface TestObject : NSObject@property ( nonatomic , retain ) ...

    iPhone开发、ObjectiveC_面试题目

    与retain语义相反的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么? 2、在一个对象的方法里面: self.name = “object”;和 name =”object” 有什么不同吗? 3...

    Objective-C学习之ARC的实现方法

    前言 在ARC出现以前,程序员们只能靠retain/relese/autorelease来确保对象们恰好“坚持”到被需要的那一刻。...ARC使内存管理在大部分时候变得如同小事一桩,但我们仍要在决定自己的类如何管理其它对象的引用

    Objective-C基础 自定义对象归档详解及简单实例

    自定义对象要实现归档必须实现NSCoding协议  NSCoding协议有两个方法,encodeWithCoder方法对对象的属性数据做编码处理,initWithCoder解码归档数据来初始化对象。 示例1 .h头文件 #import @interface user...

    Amazon Simple Queue Service tarzan_2.0.5插件及帮助文档

    == TARZAN == ... == LINKS == ... == LICENSE == This code has been released under the Simplified (aka "New") BSD license (1999) as follows: ...Redistribution and use in source and binary forms, with or ...

    RHAdditions:多年来为我服务的各种Objective-C类别和附加功能

    RH附加这些年来,为我服务良好的各种Objective-C类别和附加功能。 希望那时也能为您服务!执照根据修改后的BSD许可证发布。 (需要注明出处) RHAdditionsCopyright (c) 2011-2013 Richard Heard. All rights ...

    模拟实现C语言中的内存管理

    这里模拟了C语言中的内存管理,当我们要创建或者使用一个对象时,那么这个对象会调用retain方法,计数+1,当我们要释放对象,我们会调用free,这里注意要对计数记性判断,如果是0的话,那么就会销毁。 #import int ...

    OC中的@property属性问题

    Retain,copy,assign...

    AlbumAndWaterMark:访问相册摄像头保存图片至相册以及图片加水印

    iOS_AlbumAndWaterMark 访问相册摄像头保存图片至相册以及图片...@property (nonatomic, retain) UIImagePickerController *imagePicker; @property(nonatomic,retain)UIImageView* imageview1; @end 在ViewController

    更新上个angular版本问题 Kafka监控工具KafkaOffsetMonitor-assembly-0.4.6-SNAPSHOT.jar

    并附上启动和关闭Linux命令 jquery-1.10.2.min.js moment.min.js bootstrap.min.js highstock.js exporting.js lodash.min.js 修改start.sh脚本 #!/bin/bash java -Xms512M -Xmx512M -Xss1024K -XX:PermSize=256m...

    iphone跑马灯效果

    #import <UIKit/UIKit.h> @class PaomaViewController; @interface PaomaAppDelegate : NSObject <UIApplicationDelegate> { ...@property (nonatomic, retain) IBOutlet PaomaViewController *viewController; @end

Global site tag (gtag.js) - Google Analytics