Posted on 2010-03-08 00:37
Vince Yuan阅读(2426)
评论(0)编辑收藏
版权声明
此文版权归作者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实际上是getter和setter,针对有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内存管理课件.docx ,assign,retain,copy
@property (nonatomic, retain) NSMutableString *currentResult; @property (nonatomic, retain) NSMutableDictionary *map; @property (nonatomic, retain) NSMutableArray *list; -(NSMutableDictionary *)...
Google Objective-C Style Guide 中文版 目录 例子 空格与格式 空格与制表符 行宽 方法声明与定义 方法调用 @public与@private 异常 协议 命名 文件名 Objective-C++ 类名 分类名 Objective-C方法名 变量名 注释 ...
在objective-c中,内存的引用计数一直是一个让人比较头疼的问题。尤其是当引用计数涉及到arc、blocks等等的时候。似乎ARC的出现只是让我们解放了双手,由于底层实现依然依赖引用计数,所以开启ARC后,只有对引用计数...
@property中的retain,copy,assign区别
OC语言教程-第4讲-内存管理2-retain点语法 OC语言教程-第5讲-内存管理3-MyArray OC语言教程-第6讲-内存管理4-AutoreleasePool OC语言教程-第7讲-协议 OC语言教程-第8讲-协议代理设计模式 OC语言教程-第9讲-Category...
在实际的项目中,IPhone应用程序会存在很多与服务器之间的数据交互的地方,XML是首选方案。 此包可以解决XML文件的解析、对象转化为XML字符串的问题。 1 通过调用解析类,可以将XML的DATA数据转换为XmlNode对象,...
②实现文件(.m):包含这些方法的实现代码,以及对别的类不可见的,仅与实现本身相关的局部变量的声明和使用。 8.九宫格解法原理;(右上解法) 左出右写入、右出左写入、上出下写入、下出上写入、重排置下; 9.iphone...
DynamicTableGenerator 是一个 Objective-C 静态库,可以快速简单地创建表格视图表单、设置面板和任何形式的用户输入。 #### ###对象/表单设置 @interface TestObject : NSObject@property ( nonatomic , retain ) ...
与retain语义相反的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么? 2、在一个对象的方法里面: self.name = “object”;和 name =”object” 有什么不同吗? 3...
前言 在ARC出现以前,程序员们只能靠retain/relese/autorelease来确保对象们恰好“坚持”到被需要的那一刻。...ARC使内存管理在大部分时候变得如同小事一桩,但我们仍要在决定自己的类如何管理其它对象的引用
自定义对象要实现归档必须实现NSCoding协议 NSCoding协议有两个方法,encodeWithCoder方法对对象的属性数据做编码处理,initWithCoder解码归档数据来初始化对象。 示例1 .h头文件 #import @interface user...
== 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 ...
RH附加这些年来,为我服务良好的各种Objective-C类别和附加功能。 希望那时也能为您服务!执照根据修改后的BSD许可证发布。 (需要注明出处) RHAdditionsCopyright (c) 2011-2013 Richard Heard. All rights ...
这里模拟了C语言中的内存管理,当我们要创建或者使用一个对象时,那么这个对象会调用retain方法,计数+1,当我们要释放对象,我们会调用free,这里注意要对计数记性判断,如果是0的话,那么就会销毁。 #import int ...
Retain,copy,assign...
iOS_AlbumAndWaterMark 访问相册摄像头保存图片至相册以及图片...@property (nonatomic, retain) UIImagePickerController *imagePicker; @property(nonatomic,retain)UIImageView* imageview1; @end 在ViewController
并附上启动和关闭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...
#import <UIKit/UIKit.h> @class PaomaViewController; @interface PaomaAppDelegate : NSObject <UIApplicationDelegate> { ...@property (nonatomic, retain) IBOutlet PaomaViewController *viewController; @end