OC MRC之循环引用问题(代码分析)
2015-12-17 12:55
281 查看
// // main.m // 07-循环引用 // // Created by apple on 13-8-9. // Copyright (c) 2013年 itcast. All rights reserved. // /* 1.@class的作用:仅仅告诉编译器,某个名称是一个类 @class Person; // 仅仅告诉编译器,Person是一个类 2.开发中引用一个类的规范 1> 在.h文件中用@class来声明类 2> 在.m文件中用#import来包含类的所有东西 3.两端循环引用解决方案 1> 一端用retain 2> 一端用assign */ #import <Foundation/Foundation.h> #import "Card.h" // @class仅仅是告诉编译器,Card是一个类 //@class Card; @interface Person : NSObject @property (nonatomic, retain) Card *card; @end #import "Person.h" #import "Card.h" @implementation Person - (void)dealloc { NSLog(@"Person被销毁了"); [_card release]; [super dealloc]; } @end #import <Foundation/Foundation.h> @class Person; @interface Card : NSObject @property (nonatomic, assign) Person *person; @end #import "Card.h" #import "Person.h" @implementation Card - (void)dealloc { NSLog(@"Car被销毁了"); // [_person release]; [super dealloc]; } @end #import <Foundation/Foundation.h> #import "Card.h" #import "Person.h" int main() { // p - 1 Person *p = [[Person alloc] init]; // c - 1 Card *c = [[Card alloc] init]; // c - 2 p.card = c; // p - 1 c.person = p; // c - 1 [c release]; // p - 0 c - 0 [p release]; return 0; }
相关文章推荐
- bat 运行java程序
- 第13周项目2 算法验证—Dijkstra算法
- PHP对数组的常用处理
- OC MRC之 @property参数(代码分析)
- Spring Mvc学习笔记 前言
- 软件工程 总结+视图+代码
- Java调试那点事
- thinkphp3.2 验证码生成和点击刷新验证码示例
- java 回调函数(callback)详解
- 编译安装LAMP实现PHP作为模块、FastCGI分离等方式
- java学习笔记-理解java语言的跨平台
- Windows下Qt Creator使用版本控制器Git来进行版本控制,GitHub进行代码托管
- Java线程:概念与原理
- OC MRC之set方法内存管理(代码分析)
- Python脚本实现项目工程自动远程部署
- 【Java EE 学习 72 下】【数据采集系统第四天】【移动/复制页分析】【使用串行化技术实现深度复制】
- OC MRC之多对象之间管理(代码分析)
- Python]新手写爬虫全过程
- java.lang.UnsatisfiedLinkError: Native Library * already loaded in another classloader
- OC MRC之计数器的基本操作(代码分析)