OC内存管理-02

原创 2015年07月06日 22:51:43

假设我们有一个人的类Person和类Book,类的具体实例变量和方法如下 

(1) Person.h

#import <Foundation/Foundation.h>

#import "Book.h"

@interface Person : NSObject

{

//Person类中有书

    Book *_book;

}

-(void)setBook:(Book *)book;

-(Book *)book;

@end

 

(2)Person.m

#import "Person.h"

/*

1) 当我们使用(占用)对象时,就对传进来的对象进行retain操作,且retain方法返回的时对象本身,所以实现代码:

_book =[book retain];

2) 当我们不使用(占用)对象时,我们应该在本身dealloc方法里对占用的对象执行一次release操作。实现语句:

[_book release]

*/

@implementation Person

-(void)setBook:(Book *)book{

 //当我们引用书对象的时候我们应该对于书book对象的计数器

//进行retain操作

    _book =[book retain];

}

-(Book *)book{

    return _book;

}

-(void)dealloc{

//不使用_book对象,需要对执行release操作

    [_book release];

NSLog(@"Person 对象被回收");

/*值得注意的时写某个类的dealloc方法时

一定要写[super dealloc],并且放在最后面

*/    

[super dealloc];

}

(3)Book.h

#import <Foundation/Foundation.h>

 

@interface Book : NSObject

 

@end

 

(4)Book.m

#import "Book.h"

 

@implementation Book

-(void)dealloc{

    NSLog(@"书对象被回收");

    [super dealloc];

}

@end

(5)main.m

#import <Foundation/Foundation.h>

#import "Person.h"

int main(int argc, const char * argv[]) {

    //创建一个人,有alloc 则就执行一次[p release]

    //p-1

    Person * p = [[Person allocinit ];

    //创建一本书,有alloc 则就执行一次[b release]

    // b1-1

    Book * b1 = [[Book allocinit];

    //计数器加1 p-1  b1-2

    p.book = b1;

    [p release];

    [b1 release];

 

    int  a;

   

      return 0;

}

 

 

总结:(1)谁retain,谁release

2)谁alloc ,谁release

OC语言之学习篇——02——内存管理

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------...

小白学开发(iOS)OC_ 单个对象的内存管理(2015-08-02)

// //  main.m //  单个对象的内存管理 // //  Created by admin on 15/8/3. //  Copyright (c) 2015年 admin. A...

OC代码14_内存管理

  • 2015年06月02日 14:07
  • 428B
  • 下载

OC中的内存管理

  • 2015年10月21日 18:02
  • 22KB
  • 下载

内存管理:02虚拟存储器

现代系统提供了虚拟存储器的概念,它是对物理内存的抽象。虚拟存储器是硬件异常,硬件地址翻译,主存,磁盘文件,操作系统的完美交互,它为每一个进程提供了一个大的,一致的私有的地址空间。         虚拟...
  • gqtcgq
  • gqtcgq
  • 2016年10月08日 20:14
  • 760

OC内存管理详解

  • 2014年05月30日 10:22
  • 18KB
  • 下载

oc内存管理.

  • 2013年11月27日 18:11
  • 168KB
  • 下载

watchmen linux高级程序设计 02进程内存管理

Linux 高级程序设计_02 进程内存管理与 valgrind 的使用     守望者成才网(http://watchmen.cn/) 本课目标 (1) 知识目标:理解 Linux 进程结构及...

OC 中的内存管理

  • 2014年05月30日 09:26
  • 261KB
  • 下载

JVM学习03-内存管理和垃圾回收02(之新生代Eden与两个Survivor区)

文章出处:http://ifeve.com/jvm-yong-generation/ 聊聊JVM的年轻代 1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OC内存管理-02
举报原因:
原因补充:

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