博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关联对象的内存管理
阅读量:5259 次
发布时间:2019-06-14

本文共 1680 字,大约阅读时间需要 5 分钟。

////  main.m#import 
#import "Pet.h"#import "Person.h"#import "SuperMan.h"int main(int argc, const char * argv[]) { @autoreleasepool { Person *per = [[Person alloc]init]; [per test]; NSUInteger r = [per retainCount]; NSLog(@"%lu",r); [per release]; SuperMan *sm = [[SuperMan alloc]init]; Pet *pet = [[Pet alloc]init]; [sm setPet:pet]; [sm test]; [sm release]; [pet release]; } return 0;}
////  Person.h#import 
#import "Pet.h"@interface Person : NSObject{ Pet *_pet;//初始化}-(void)test;@end//// Person.m#import "Person.h"@implementation Person-(instancetype)init{ if (self=[super init]) { self->_pet = [[Pet alloc]init]; } return self;}-(void)test{ if (_pet) { [_pet play]; }}-(void)dealloc{ NSLog(@"释放"); [_pet release]; [super dealloc];}@end
////  Pet.h//  关联对象的内存管理#import 
@interface Pet : NSObject-(void)play;@end//// Pet.m// 关联对象的内存管理#import "Pet.h"@implementation Pet-(void)play{ NSLog(@"play");}-(void)dealloc{ NSLog(@"Pet 释放"); [super dealloc];}@end
////  SuperMan.h#import 
#import "Pet.h"@interface SuperMan : NSObject{ Pet *_pet;}-(void)setPet:(Pet*)mypet;-(void)test;@end//// SuperMan.m#import "SuperMan.h"@implementation SuperMan-(void)setPet:(Pet*)mypet{ //_pet = mypet; if (_pet!=mypet) { [_pet release]; _pet = [mypet retain]; }}-(void)test{ if (_pet) { [_pet play]; }}-(void)dealloc{ NSLog(@"Super man 释放"); [_pet release]; [super dealloc];}@end

 

转载于:https://www.cnblogs.com/WJR12/p/5043475.html

你可能感兴趣的文章
C++面试问题
查看>>
[转]C++ Socket编程
查看>>
[转]众多OCR软件
查看>>
[转]OCR识别的开源分析
查看>>
target="_parent"和"_self"的区别 (转载)
查看>>
读Kernel感悟-Linux内核启动-从hello world说起
查看>>
如何将dmp文件导入到自己的oracle数据库中
查看>>
生成key
查看>>
s5_day13作业
查看>>
区间跳跃问题
查看>>
Redis 事物、悲观、乐观锁 (详细)
查看>>
模仿块级作用域
查看>>
Visual Studio 2005 Web Application Projects正式发布!
查看>>
servlet知识点总结
查看>>
U盘安装Win7
查看>>
Android 中的监听器模式与观察者模式
查看>>
pageadmin CMS自助建站系统教程:模板中执行sql语句
查看>>
Spinner的级联效果实现
查看>>
115-PHP实例化和不实例化输出类常量
查看>>
P3810 陌上花开 CDQ分治
查看>>