@class

1.@class基本概念

  • 作用:可以简单地引用一个类
  • @class Person;
    • 仅仅是告诉编译器:Person是一个类;并不会包含Person这个类的所有内容
      具体使用
    • 在.h文件中使用@class引用一个类
    • 在.m文件中使用#import包含这个类的.h文件

2.@class其它应用场景

  • 对于循环依赖关系来说,比方A类引用B类,同时B类也引用A类
  • 这种嵌套包含的代码编译会报错
#import "B.h"
@interface A : NSObject
{
    B *_b;
}
@end

#import “A.h"
@interface B : NSObject
{
    A *_a;
}
@end
  • 当使用@class在两个类相互声明,就不会出现编译报错
@class B;
@interface A : NSObject
{
    B *_b;
}
@end

@class A;
@interface B : NSObject
{
    A *_a;
}
@end

3.@class和#import作用上的区别

  • #import会包含引用类的所有信息(内容),包括引用类的变量和方法
    @class仅仅是告诉编译器有这么一个类, 具体这个类里有什么信息, 完全不知
    效率上的区别

  • 如果有上百个头文件都#import了同一个文件,或者这些文件依次被#import,那么一旦最开始的头文件稍有改动,后面引用到这个文件的所有类都需要重新编译一遍 , 编译效率非常低
    相对来讲,使用@class方式就不会出现这种问题了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这一段感觉就是从脑子里拉回忆。各种《巨人的陨落》的人物出现,不愧为三部曲之二。有时候想人物特点,特别的事件就要花上...
    Super_亭小亭阅读 1,111评论 0 0
  • “多谢月神殿下厚爱。蘅芜暂且未曾想过成家。”说罢,水神转身就走。桃夭悄悄附在他的玉簪上,跟着他回了水宫。 “陛下,...
    慕梓枔阅读 3,345评论 2 3
  • “我走了。” 唐元穿好鞋,站在门口等了一会儿,发展莫言并没有出来送他的意思,咋了咋舌,开门走了出去。 莫言在里屋静...
    谁说可以放过阅读 1,345评论 0 0
  • 肉肉,今天情人节,我要和你分手! 今天是白色情人节。但是我还是要和你分手。 虽然从10岁开始我们就逐渐相亲相爱,在...
    hi阿玖阅读 2,823评论 0 2
  • 我看的第一部电视剧是《小李飞刀》,当时的感觉是很好看,并还想象自己也是里面的人物,行走江湖。特别是李探花的武功怎么...
    少叔夜阅读 1,690评论 0 5