7.Objective-C之@class的使用

前言

1.【掌握】@class基本概念
2.【掌握】@class其它应用场景
3.【掌握】@class和#import
4.【必知】@calss的使用易错注意事项
5.【必知】@class的使用总结

1.@class基本概念:

作用
可以简单地引用一个类
简单使用
@class Dog;
仅仅是告诉编译器:Dog是一个类;并不会包含Dog这个类的所有内容
具体使用
在.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方式就不会出现这种问题了
####
由于import是一个预编译指令,他会将" "中的文件拷贝到import所在的位置
并且import有一个特点,只有" "中的文件发生了变化,那么import就会重新拷贝一次(更新操作)
#####

4.@class的使用易错注意事项

<1>在h头文件中使用@class之后,然后在m实现文件中使用@import注意导入的顺序,一般所在实现文件的对应的头文件是放在最下面的。
 <2>子类不能在h文件中通过@class导入所继承的父类。

5.@class的总结

如果h头文件没有涉及@class所告诉编译器的类的属性和方法,就可以使用@class,然后在对应的m实现文件#import需要用到的类!!!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,956评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • 祝站书协在镇委、镇政府的领导和支持下,从2013年以来,连续4年开展“迎新春,送春联”活动。今年又组织了12名会员...
    凤港渔人阅读 687评论 2 0
  • 对于我来说,写作就是在坚持一件事。 早先觉得写作是个技术活,写好了才会上升到艺术活。过去见自己的文字发表在报刊杂志...
    老鼻子了阅读 205评论 2 1
  • 正文:孩子正在努力的过程中,父母应该及时给予关注,通过赞美让孩子获得鼓励。比如孩子见了外人很有礼貌的说话,...
    李向姿阅读 222评论 0 0