A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔石炫 中级黑马   /  2014-9-26 02:41  /  1061 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当两个类在各自内部互相引用,如果在它们的头文件中#import对方的头文件,则会发生无法编译的问题。
此问题可以用@class关键字解决:
.h头文件中使用@class ClassName来替代#import “ClassName.h”
.m文件中才正式#import “ClassName.h”来获得类的信息。

开发过程中,为了提高编译效率,在.h头文件中,使用@class ClassName来告诉编译器存在ClassName这样一个类,然后在.m文件中#import “ClassName.h”获得类的全部信息,以便在实现中调用。
但是,子类的头文件中必须#import “SuperClass.h”,不能使用@class

循环引用还会造成内存管理的问题,表现在两个类互相操作对方的引用计数器,导致各自计数器都不能达到0,无法释放对象内存,解决这个问题的方法是:

其中一个类的set方法用retain参数,另外一个用assign

1 个回复

倒序浏览
近期ios的比较多啊,云计算都跑哪去了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马