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

4.4OC10-内存管理2-set方法的内存管理

    博客分类:
  • IOS
 
阅读更多

4.4OC10-内存管理2-set方法的内存管理

 

例一:

main.m

 //

//  main.m

//  OC10-内存管理2-set方法的内存管理

//

//  Created by qwz on 13-12-9.

//  Copyright (c) 2013年 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

#import "Student.h"

#import "Book.h"

 

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

{

 

    @autoreleasepool {

        Student *stu = [[Student alloc] initWithAge:29];

        Book *book = [[Book alloc] initWithPrice:3.5];

        

        [book release];

        [stu release];

    }

    return 0;

}

 

Student.h

 //

//  Student.h

//  OC10-内存管理2-set方法的内存管理

//

//  Created by liuyes on 13-12-9.

//  Copyright (c) 2013年 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

#import "Book.h"

 

@interface Student : NSObject

 

@propertyint age;

 

- (id)initWithAge:(int)age;

 

@propertyBook *book;

@end

 

Student.m
 //

//  Student.m

//  OC10-内存管理2-set方法的内存管理

//

//  Created by liuyes on 13-12-9.

//  Copyright (c) 2013年 renhe. All rights reserved.

//

 

#import "Student.h"

 

@implementation Student

 

#pragma mark 构造方法

- (id)initWithAge:(int)age{

    if( self = [super init]){

        _age = age;

    }

    returnself;

}

 

#pragma mark 回收对象

- (void)dealloc{

    NSLog(@"student:%i 被销毁了", _age);

    [super release];

}

 

@end

 

 Book.h
 //

//  Book.h

//  OC10-内存管理2-set方法的内存管理

//

//  Created by liuyes on 13-12-9.

//  Copyright (c) 2013年 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

@interface Book : NSObject

@propertyfloat price; //价格

 

- (id)initWithPrice:(float)price;

 

@end

 

 Book.m
 //

//  Book.m

//  OC10-内存管理2-set方法的内存管理

//

//  Created by liuyes on 13-12-9.

//  Copyright (c) 2013年 renhe. All rights reserved.

//

 

#import "Book.h"

 

@implementation Book

 

- (id)initWithPrice:(float)price{

    if (self = [super init]){

        _price = price;

    }

    returnself;

}

 

- (void)dealloc{

    NSLog(@"book:%f 被销毁了", _price);

    [super dealloc];

}

 

@end

运行结果

2013-12-09 17:04:29.679 OC10-内存管理2-set方法的内存管理[634:403] book:3.500000 被销毁了

2013-12-09 17:04:29.703 OC10-内存管理2-set方法的内存管理[634:403] student:29 被销毁了

 ---------------------------------
----------------------------------
例二:
main.m
 

//

//  main.m

//  OC10-内存管理2-set方法的内存管理

//

//  Created by qwz on 13-12-9.

//  Copyright (c) 2013 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

#import "Student.h"

#import "Book.h"

 

void test(Student *stu){

    //book:1

    Book *book = [[Book alloc] initWithPrice:3.5];

    

    //book:2

    stu.book = book;

    

    //book:1

    [book release];

    

    Book *book2 = [[Book alloc] initWithPrice:4.5];

    //book2:2

    stu.book = book2;

    //book2:1

    [book2 release];

    

}

 

void test1(Student *stu){

    [stu readBook];

}

 

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

{

 

    @autoreleasepool {

        //stu:1

        Student *stu = [[Student alloc] initWithAge:29];

        

        //stu:1

        //book:1

        //book2:1

        test(stu);

        

        //stu:1

        //book:1

        //book2:1

        test1(stu);

        

        //stu:0

        //book:0

        [stu release];

    }

    return 0;

}

 

Student.h
 

//

//  Student.h

//  OC10-内存管理2-set方法的内存管理

//

//  Created by liuyes on 13-12-9.

//  Copyright (c) 2013 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

#import "Book.h"

 

@interface Student : NSObject{

    Book *_book;

}

 

@propertyint age;

 

- (id)initWithAge:(int)age;

 

@propertyBook *book;

 

- (void)readBook;

 

@end

 

Student.m

 

//

//  Student.m

//  OC10-内存管理2-set方法的内存管理

//

//  Created by liuyes on 13-12-9.

//  Copyright (c) 2013 renhe. All rights reserved.

//

 

#import "Student.h"

 

@implementation Student

 

#pragma mark 构造方法

- (id)initWithAge:(int)age{

    if( self = [super init]){

        _age = age;

    }

    returnself;

}

 

#pragma mark 回收对象

- (void)dealloc{

    //释放对象

    [_book release];

    //[self.book release];

    NSLog(@"student:%i 被销毁了", _age);

    [super dealloc];

}

 

#pragma mark - gettersetter方法

//@synthesize book = _book;

//如果自己手动实现了gettersetterxcode就不会自动生成@synthesize

//也就不会自动生成_book

//gettersetter的默认实现

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

    if(_book != book){

        //先释放旧的成员变量

        [_book release];

        //retain新传进来的对象

        _book = [book retain];

    }

}

 

- (Book *)book{

    return  _book;

}

 

#pragma mark - 公共方法

#pragma mark 读书

- (void)readBook{

    NSLog(@"当前读的书是:%f", _book.price);

}

 

@end

 

Book.h

 

//

//  Book.h

//  OC10-内存管理2-set方法的内存管理

//

//  Created by liuyes on 13-12-9.

//  Copyright (c) 2013 renhe. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

@interface Book : NSObject

@propertyfloat price; //价格

 

- (id)initWithPrice:(float)price;

 

@end

 

Book.m 

 

//

//  Book.m

//  OC10-内存管理2-set方法的内存管理

//

//  Created by liuyes on 13-12-9.

//  Copyright (c) 2013 renhe. All rights reserved.

//

 

#import "Book.h"

 

@implementation Book

 

- (id)initWithPrice:(float)price{

    if (self = [super init]){

        _price = price;

    }

    returnself;

}

 

- (void)dealloc{

    NSLog(@"book:%f 被销毁了", _price);

    [super dealloc];

}

 

@end

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    pre_o_1csdn63m9a1bs0e1rr51niuu33e.a

    pre_o_1csdn63m9a1bs0e1rr51niuu33e.a

    matlab建立计算力学课程的笔记和文件.zip

    matlab建立计算力学课程的笔记和文件.zip

    FT-Prog-v3.12.38.643-FTD USB 工作模式设定及eprom读写

    FT_Prog_v3.12.38.643--FTD USB 工作模式设定及eprom读写

    matlab基于RRT和人工势场法混合算法的路径规划.zip

    matlab基于RRT和人工势场法混合算法的路径规划.zip

    matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip

    matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip

    office 2016三和一精简版

    office 2016三和一精简版

    Scrapy-1.0.2-py2-none-any.whl

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    麦肯锡咨询顾问必备宝典-时间管理.ppt

    麦肯锡咨询顾问必备宝典-时间管理.ppt

    setuptools-0.6c10-py2.4.egg

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    麦肯锡顾问的黄金思考方法.pptx

    麦肯锡顾问的黄金思考方法.pptx

    91fdd461elb59a4ce8dfcfc46bc283a7.msi

    91fdd461elb59a4ce8dfcfc46bc283a7.msi

    ansys maxwell

    ansys maxwell

    5-5.py

    5-5

    xx广告促销计划流程实施手册.ppt

    xx广告促销计划流程实施手册.ppt

    仿小米商城微信小程序源码+项目说明.zip

    仿小米商城微信小程序源码+项目说明.zip

    pytest-4.6.0.tar.gz

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    Scrapy-2.10.1.tar.gz

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    麦肯锡xx客户满意服务.ppt

    麦肯锡xx客户满意服务.ppt

    网课专注度监测预警系统基于yolov5目标检测的网课专注度检测系统源码+模型+pyqt5界面.zip

    网课专注度监测预警系统基于yolov5目标检测的网课专注度检测系统源码+模型+pyqt5界面.zip

    基于python+Scrapy的农业数据爬虫设计与实现

    【作品名称】:基于python+Scrapy的农业数据爬虫设计与实现 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 基于Scrapy的农业数据爬虫设计与实现 . ├── Crops # web服务 │ ├── app.py │ ├── static # 静态文件 │ │ ├── css │ │ └── js │ └── templates # 静态页面 │ ├── corn.html │ ├── corns.html │ ├── index.html │ ├── porcor.html │ ├── pork.html │ └── porks.html ├── README.md └── spider # 爬虫及数据处理 ├── integration # 数据汇总 │ └── corn.py └── tutorial # 爬虫 ├── scrap

Global site tag (gtag.js) - Google Analytics