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 // 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 // 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 // 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
// 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 - getter和setter方法
//@synthesize book = _book;
//如果自己手动实现了getter和setter,xcode就不会自动生成@synthesize
//也就不会自动生成_book
//getter和setter的默认实现
- (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
matlab建立计算力学课程的笔记和文件.zip
FT_Prog_v3.12.38.643--FTD USB 工作模式设定及eprom读写
matlab基于RRT和人工势场法混合算法的路径规划.zip
matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip
office 2016三和一精简版
文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
麦肯锡咨询顾问必备宝典-时间管理.ppt
文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
麦肯锡顾问的黄金思考方法.pptx
91fdd461elb59a4ce8dfcfc46bc283a7.msi
ansys maxwell
5-5
xx广告促销计划流程实施手册.ppt
仿小米商城微信小程序源码+项目说明.zip
文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
麦肯锡xx客户满意服务.ppt
网课专注度监测预警系统基于yolov5目标检测的网课专注度检测系统源码+模型+pyqt5界面.zip
【作品名称】:基于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