内存管理1retain和release

简介:

Student.h:

#import <Foundation/Foundation.h>   @interface Student : NSObject  @property int age;  //默认会生成一个_age属性  @end

Student.m:

#import "Student.h"  @implementation Student //@synthesize age=_age;//xcode4.5中可以不使用synthesise方法,直接在头文件中使用property方法即可 //如果只在m文件中定义而没有在h文件中申明的方法属于privte方法,如果不写类型一般默认是protected方法 -(void)dealloc{  //构造父类的回收方法     NSLog(@"%@被销毁了",self);     NSLog(@"_age %i",_age);     [super dealloc];//一定要调用super的dealloc方法,最好放在最后面调用 } @end

main:

#import <Foundation/Foundation.h> #import "Student.h"  int main(int argc, const char * argv[]) {      @autoreleasepool {         Student *stu=[[[Student alloc] init] autorelease];  //alloc方法计数器为1         [stu retain];//调用一次retain方法计数器加1         NSLog(@"retaincount is %zi",[stu retainCount]);         [stu release];//调用一次release方法计数器减1         NSLog(@"retaincount is %zi",[stu retainCount]);         stu.age=10;         [stu retain];//add 1         //这儿retainCount返回的是Unsigned long 无符号长整形 %z代表无符号         NSLog(@"retaincount is %zi",[stu retainCount]);         NSLog(@"Student age is %i",[stu age]);         [stu release];  //计数器为0就调用dealloc方法     }     return 0; } 

结果:

2013-08-02 14:57:25.342 内存管理1retainrelease[788:303] retaincount is 2

2013-08-02 14:57:25.344 内存管理1retainrelease[788:303] retaincount is 1

2013-08-02 14:57:25.344 内存管理1retainrelease[788:303] retaincount is 2

2013-08-02 14:57:25.344 内存管理1retainrelease[788:303] Student age is 10

2013-08-02 14:57:25.345 内存管理1retainrelease[788:303] <Student: 0x100109a90>被销毁了

2013-08-02 14:57:25.345 内存管理1retainrelease[788:303] _age 10























本文转自蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366576,如需转载请自行联系原作者

相关文章
|
存储 编译器 C语言
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存2
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存
227 3
|
程序员 C语言 C++
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存1
【C语言】VS实⽤调试技巧&(Debug和Release)监视&内存
279 3
|
存储 编译器 Serverless
iOS-底层原理 33:内存管理(一)TaggedPointer/retain/release/dealloc/retainCount 底层分析
iOS-底层原理 33:内存管理(一)TaggedPointer/retain/release/dealloc/retainCount 底层分析
468 0
iOS-底层原理 33:内存管理(一)TaggedPointer/retain/release/dealloc/retainCount 底层分析
|
7月前
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
2432 0
|
7月前
|
存储 缓存 NoSQL
内存管理基础:数据结构的存储方式
数据结构在内存中的存储方式主要包括连续存储、链式存储、索引存储和散列存储。连续存储如数组,数据元素按顺序连续存放,访问速度快但扩展性差;链式存储如链表,通过指针连接分散的节点,便于插入删除但访问效率低;索引存储通过索引表提高查找效率,常用于数据库系统;散列存储如哈希表,通过哈希函数实现快速存取,但需处理冲突。不同场景下应根据访问模式、数据规模和操作频率选择合适的存储结构,甚至结合多种方式以达到最优性能。掌握这些存储机制是构建高效程序和理解高级数据结构的基础。
793 1
|
7月前
|
存储 弹性计算 固态存储
阿里云服务器配置费用整理,支持一万人CPU内存、公网带宽和存储IO性能全解析
要支撑1万人在线流量,需选择阿里云企业级ECS服务器,如通用型g系列、高主频型hf系列或通用算力型u1实例,配置如16核64G及以上,搭配高带宽与SSD/ESSD云盘,费用约数千元每月。
819 0
|
存储 编译器 C语言
【C语言篇】数据在内存中的存储(超详细)
浮点数就采⽤下⾯的规则表⽰,即指数E的真实值加上127(或1023),再将有效数字M去掉整数部分的1。
1024 0
|
存储
共用体在内存中如何存储数据
共用体(Union)在内存中为所有成员分配同一段内存空间,大小等于最大成员所需的空间。这意味着所有成员共享同一块内存,但同一时间只能存储其中一个成员的数据,无法同时保存多个成员的值。