黑马程序员技术交流社区

标题: 一个小小问题~~~ [打印本页]

作者: 道本真    时间: 2014-7-27 22:02
标题: 一个小小问题~~~
在OC里有讲到@class 类名,这个到底是在什么场景的时候用? 我怎么看作业里好像很少出现啊
作者: haohaoxuexi    时间: 2014-7-27 22:50
@class XYpoint  //只需要知道XYpoint是个类名,不需要引用XYpoint类中方法
作者: 道本真    时间: 2014-7-28 08:41
haohaoxuexi 发表于 2014-7-27 22:50
@class XYpoint  //只需要知道XYpoint是个类名,不需要引用XYpoint类中方法

能说说,到底什么时候用比较好吗?
作者: 为梦想挺身而出    时间: 2014-7-28 09:13
1、@class的作用:仅仅告诉编译器某个名称是一个类
比如@class Person;  仅仅告诉编译器Person是个类

2、开发中引用一个类的规范
1> 在.h文件中用@class来声明类
2> 在.m文件中用#import来包含类的所有东西,这个是跟性能有关系的
    <1> @class不能办到#import不能干的事情,循环包含,循环声明,循环引用
    <2> @class还有个好处,提高编译效率

3、@class和#import的区别
1> #import 方式会包含被引用类的所有信息,包括被引用类的变量和方法;
2> @class方式只是告诉编译器A.h中B *b只是类的声明,具体这个类的声明信息,这里不需要知道,等实现中真正用到的时候,才会真正去查看B类中信息,在.m实现文件中,如果需要引用到被引用类的实体变量或者方法时,还需要使用#import方式引用被引用类
3> 应用场合: 如果是继承某个类就要导入类的头文件;如果只是定义成员变量属性用@class

4、两端循环引用解决方案
1> 一端用retain
2> 一端用assign,assign就是直接复制,dealloc里面就不需要释放了
一般两端循环引用的时候用@class,当在.m文件需要用到的时候再把头文件搞进来
另外:@class跟@protocol的用法一样




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2