92,内存管理(四)
2015-12-14 18:38
316 查看
// 多个对象内存管理
#import <Foundation/Foundation.h>
@interface Room : NSObject
{
int _no;
}
@property int no;
@end
@implementation Room
- (void)dealloc
{
NSLog(@"function = %s,no = %i",__func__,_no);
[super dealloc];
}
@end
@interface Person :
NSObject
{
Room *_room;
}
-(void)setRoom:(Room *)room;
@end
@implementation Person
-(void)setRoom:(Room *)room{
if(_room != room){
[_room release];
[room retain];
_room = room;
}
}
- (void)dealloc
{
[_room release];
NSLog(@"function = %s",__func__);
[super dealloc];
}
@end
int main(int argc,const
char * argv[]) {
@autoreleasepool {
Person *person = [[Personalloc]
init];
Room *room = [[Roomalloc]init];
room.no =
888;
person.room = room;
[room release];
[person release];
}
return 0;
}
//2015-12-14 18:36:45.544 4,多对象内存管理[3171:274415] function = -[Room dealloc],no = 888
//2015-12-14 18:36:45.546 4,多对象内存管理[3171:274415] function = -[Person dealloc]
//Program ended with exit code: 0
#import <Foundation/Foundation.h>
@interface Room : NSObject
{
int _no;
}
@property int no;
@end
@implementation Room
- (void)dealloc
{
NSLog(@"function = %s,no = %i",__func__,_no);
[super dealloc];
}
@end
@interface Person :
NSObject
{
Room *_room;
}
-(void)setRoom:(Room *)room;
@end
@implementation Person
-(void)setRoom:(Room *)room{
if(_room != room){
[_room release];
[room retain];
_room = room;
}
}
- (void)dealloc
{
[_room release];
NSLog(@"function = %s",__func__);
[super dealloc];
}
@end
int main(int argc,const
char * argv[]) {
@autoreleasepool {
Person *person = [[Personalloc]
init];
Room *room = [[Roomalloc]init];
room.no =
888;
person.room = room;
[room release];
[person release];
}
return 0;
}
//2015-12-14 18:36:45.544 4,多对象内存管理[3171:274415] function = -[Room dealloc],no = 888
//2015-12-14 18:36:45.546 4,多对象内存管理[3171:274415] function = -[Person dealloc]
//Program ended with exit code: 0
相关文章推荐
- [LeetCode]108. Construct Binary Tree from Preorder and Inorder Traversal由前序序列和中序序列重建二叉树
- zzulioj 1831: 周末出游 (vector&&dfs)
- 远程管理数据库phpMyAdmin部署方案
- Uboot 2014.07 makefile分析
- 解决ListView中滑动复用时控件的混乱问题
- 关于WPS页面横向问题
- iOS navigation UIBarButtonItem 风格
- hive使用rank实现topN的查询
- 学习日记--PopupWindow简单功能实现
- 机器学习之回归
- JS之理解组合继承模式和寄生式组合继承的区别
- Android学习之高德地图 一(定位)
- gulp配置browserify多入口
- PHPCMS V9 按浏览次数排行调用文章
- 神经网络编程入门
- Spring Bean在BeanFactory生命周期
- treegrid-3.0特性详解
- Crazy Android Note Chapter-7
- unix/linux文件系统基础知识
- Python+Hadoop Streaming实现MapReduce(如何给map和reduce的脚本传递参数)