博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
循环引用 。 @class
阅读量:5150 次
发布时间:2019-06-13

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

@class

循环引用:你引用我,我引用你

 1>@class的作用:仅仅告诉编译器有这么一个类,并不知道里面有什么

 *@class person:告诉编译器有person这个类

 

 2>开发中引用一个类的规范:为什么这样写(面试题):跟性能有关,可以循环引用、#import作用是拷贝,@class还可以提高编译效率

 *在.h文件中用@class申明

 *在.m文件中用#import来包含类中所有的东西

 

 3>两端循环引用的解决方法

 *一端用assign

 *一端用retain

 

1 #import 
2 #import "Person.h" 3 #import "Card.h" 4 int main(int argc, const char * argv[]) { 5 Person *p = [[Person alloc]init]; 6 Card *c = [[Card alloc]init]; 7 p.card = c; 8 c.person = p; 9 [c release];10 [p release];11 return 0;12 }
1 #import 
2 //#import "Card.h"3 @class Card;4 @interface Person : NSObject5 @property(nonatomic,assign)Card *card;6 7 8 @end
1 #import "Person.h" 2 #import "Card.h" 3 @implementation Person 4  5 - (void)dealloc{ 6  7 //    [_card release]; 8 //    [_card release]; 9     NSLog(@"person对象被销毁");10 //    [_card release];11     [super dealloc];12 }13 14 @end
1 #import 
2 //#import "Person.h"3 @class Person;4 @interface Card : NSObject5 @property(nonatomic,retain)Person *person;6 @end
car.h
1 #import "Card.h" 2 #import "Person.h" 3 @implementation Card 4  5 - (void)dealloc{ 6     [_person release]; 7 //    [_person release]; 8     NSLog(@"card对象被销毁"); 9     [super dealloc];10 }11 @end

 

转载于:https://www.cnblogs.com/lanmaokomi/p/8708122.html

你可能感兴趣的文章
【AMAD】transitions -- 一个python实现的轻量级,面向对象的有限状态机
查看>>
如何使用Adobe Reader复制PDF文档上的文字
查看>>
PL/SQL学习(一)
查看>>
c#中的反射机制
查看>>
Java for LeetCode 160 Intersection of Two Linked Lists
查看>>
【web前端面试题整理04】阿里一行之大神面对面
查看>>
MYSQL数据库的优化
查看>>
Ubuntu 16.04中安装谷歌Chrome浏览器
查看>>
css3种方法实现元素的绝对居中
查看>>
在Eclipse中查看JDK类库的源代码
查看>>
API第二讲
查看>>
架构模式中的Active Record和Data Mapper
查看>>
linux每日命令(32):gzip命令
查看>>
layui 在实例中设置了 id 下面的table id 就应使用设置的id ,否则获取不到值
查看>>
ASP HTML JS CSS JQ之间恩怨
查看>>
(转)直方图反向投影
查看>>
[Other]来做一个微信打印机吧 -- 微信打印的设计思路參考
查看>>
使用EXCEL设置“下拉菜单”选项功能
查看>>
在这里的最后一天
查看>>
ajax初识
查看>>