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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 道本真 中级黑马   /  2014-7-27 22:02  /  1231 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在OC里有讲到@class 类名,这个到底是在什么场景的时候用? 我怎么看作业里好像很少出现啊

3 个回复

倒序浏览
@class XYpoint  //只需要知道XYpoint是个类名,不需要引用XYpoint类中方法
回复 使用道具 举报
haohaoxuexi 发表于 2014-7-27 22:50
@class XYpoint  //只需要知道XYpoint是个类名,不需要引用XYpoint类中方法

能说说,到底什么时候用比较好吗?
回复 使用道具 举报
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的用法一样
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马