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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yaozeyang_2014 中级黑马   /  2014-4-6 15:17  /  1101 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 yaozeyang_2014 于 2014-4-6 17:45 编辑

在头文件用这个@class可以声明有这个类,但是.m文件实现又需要用#import,这样一样啊。。对于性能上感觉还是一样要拷贝进来啊,反倒是直接在头文件用import更直接,class好像有点多余。。求解释!!谢谢了

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

倒序浏览
OC语言用有@class关键字吗?应该没有吧!类的生命应该是
  1. @interface 类名

  2. @end
复制代码

实现应该是
  1. @implementation 类名
  2. @end
复制代码

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
@class可以告诉编译器这个是一个类,为什么要必须有勒?
比如在组合种情况(就是一个类的成员变量中有对象成员变量):
一个学生,学生有一本书
在student.h文件中,如下代码
@interface Student : NSObject
@property(nonatomic, strong, readwrite)Book *book;
@end

假如没有@class Book;对Book声明它是一个类就会报错。
假如在这个.h文件中用#import来引用book.h,确实是可以的,但是student的.m和.h文件都会去导入这个头文件,这个性能就没有用@class那么好了,因为.h文件中只需要知道这是一个类就OK了,而对这个成员变量进行操作的方法都是在.m文件中实现的。所以,.h文件用@class进行声明就可以了,当.m文件中要用到这个类,再进行#import。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
一般头文件中不用#import Car.h ,因为import的意思就是拷贝,如果改变Car.h,那么有100个类引用了Car.h就要再次拷贝100次,所以最好用@class

但有个特例,那就是父类一定要引用#import

1.@class作用:仅仅是告诉编译器,某个名称是一个类

@class Person

2.开发中引用一个类的规范:

>在点h头文件中,用@class来声明类

>在点m文件中用#import来包含类的所有东西
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马