美文网首页
7.Objective-C之@class的使用

7.Objective-C之@class的使用

作者: 峰子1994 | 来源:发表于2017-10-28 17:01 被阅读1次

前言

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需要用到的类!!!

相关文章

  • 7.Objective-C之@class的使用

    前言 1.【掌握】@class基本概念2.【掌握】@class其它应用场景3.【掌握】@class和#import...

  • kotlin class constructor的使用

    6 kotlin之class kotlin的class比Java更简洁面料采用,使用更方便,类似于方法直接写上参数...

  • iOS 开发之逆向篇(一):Class-dump的简单使用

    文章预读 iOS逆向初体验之class-dump Class-dump 使用注意点: 1、将命令工具放在/usr/...

  • java 类的加载

    加载是将class文件加载到jvm内存,并为之创建一个大的Class,任何类被系统使用都会建立一个大Class对象...

  • 属性操作

    特殊的属性操作,如class,for等 操作class: 操作class时不能直接使用class要使用classN...

  • @class 的含义

    1.@class的使用: @class 的使用格式: @class 类名; 2.@classs xxxx 含义...

  • HOOK

    概述 16.8以后得新特性,在不使用class得情况是使用state及react特性。 动机: 组件之...

  • @class的使用

    今天碰到一个问题,引入某个类的时候,老是提醒重复引用的问题,最后使用@class + 类名就解决了,这里讲@cla...

  • @class的使用

    @class @class基本概念 作用可以简单地引用一个类 简单使用@class 类名。告诉编译器有这个类的存在...

  • Class的使用

    任何一个类都是Class实例对象万事万物皆对象,类也是对象,是Class的实例对象 1.任何一个类都有一个隐含的静...

网友评论

      本文标题:7.Objective-C之@class的使用

      本文链接:https://www.haomeiwen.com/subject/mrespxtx.html