黑马程序员技术交流社区
标题: 每日小结:循环引用及其解决方案 [打印本页]
作者: 崔石炫 时间: 2014-9-26 02:41
标题: 每日小结:循环引用及其解决方案
当两个类在各自内部互相引用,如果在它们的头文件中#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。
作者: 潘多拉 时间: 2014-9-26 09:18
近期ios的比较多啊,云计算都跑哪去了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |