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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

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

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

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

OC代码14_内存管理

  • 2015-06-02 14:07
  • 428B
  • 下载

OC中的内存管理

  • 2015-10-21 18:02
  • 22KB
  • 下载

effective C++ 笔记-02-内存管理01

条款5:对应的new和delete要采用相同的形式 下面的语句有什么错? string *stringArray = new string[100];     ... delete strin...

OC内存管理详解

  • 2014-05-30 10:22
  • 18KB
  • 下载

oc内存管理.

  • 2013-11-27 18:11
  • 168KB
  • 下载

【IOS笔试面试】02-内存管理

1. 怎么保证多人开发进行内存泄露的检查. 1> 使用Analyze进行代码的静态分析 2> 为避免不必要的麻烦, 多人开发时尽量使用ARC   2.非自动内存管理情况下怎么做单例模式...

oc高级编程--ios内存管理

  • 2016-08-30 10:15
  • 5.63MB
  • 下载

OC 中的内存管理

  • 2014-05-30 09:26
  • 261KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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