IOS 头文件导入-@class注意事项总结

 更新时间:2017年05月16日 11:18:53   投稿:lqh  
这篇文章主要介绍了IOS 头文件导入-@class注意事项总结的相关资料,需要的朋友可以参考下

IOS 头文件导入-@class注意事项总结

一,导入头文件有两种不同的方法:

使用引号或者使用尖括号,例如,#import <Cocoa/Cocoa.h>和#import "Tire.h".带尖括号的语句是用来导入系统头文件的,而带引号的语句则说明导入的是项目本地的头文件,如果你看到的头文件名是用尖括号括起来的,那么这个头文件对你的项目来说是只读的,因为它属于系统。如果头文件名是被引号括起来的,那么你(或参与这个项目的其他人)就可以编辑它。

二,Objective-C提供了一种方法能够减少由依赖关系引起的重新编译所带来的影响。

依赖关系问题的存在是因为Objective-C编译器需要某些信息才能够工作。有时,编译器需要知道类的全部信息,例如它的实例变量配置,它所继承的所有类等。而有的时候,编译器只需要知道类名即可,不需要了解它的整个含义。

     例如,对象复合后,这个复合使用指向对象的指针。这样之所以能行得通,是因为所有Objective-C对象都存放在动态分配的内存中。编译器只需要知道这是一个类就可以了。然后它就地发现这个实例变量是指针的大小,而这个指针的大小在整个程序中都不会改变。

    Objective-C引入了关键字@class来告诉编译器:“这是一个类,所以,我只需要通过指针来引用它。”这样编译器就会“平静”下来:它并不需要知道关于这个类的更多信息,只要了解它是通过指针来引用的即可。

    @class创建了一个前向引用。就是在告诉编译器:“相信我,以后你会知道这个类到底是什么,但是现在,你只需要知道这些”,如果有循环依赖关系,@class也很有用。即A类使用B类,B类也使用A类。如果试图通过#import语句让这两个类互相引用,那么最后就会出现编译错误。但是如果在A.h中使用@class B,在B.h中使用@class A,那么这两个类就可以互相引用了。

三,有时候,我们在文件中导入了Engine.h而没有导入<Cocoa/Cocoa.h>,这是为什么呢?

我们知道,Engine.h中已经导入了<cocoa/Cocoa.h>,所以,不需要我们自己再导入一遍了。然而,如果你想在该文件里加上#import <Cocoa/Cocoa.h>,这是可以的,因为#import命令具有足够的智能,它不会重复导入自己的文件。 

四,在学习过程中,我们认识了跨文件依赖关系,在这种关系中,头文件或源文件需要使用另一个头文件中的信息。

文件之间互相重复的导入会增加编译次数,也会导致不必要的重复编译。而巧妙地使用@class命令能够减少编译时间,@class告诉编译器“相信我,你最终能够了解这个名称的类”,它可以减少不得不导入的头文件数量。

 参考资料:《Objective-C基础教程》

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • iOS 修改alertViewController弹框的字体颜色及字体的方法

    iOS 修改alertViewController弹框的字体颜色及字体的方法

    下面小编就为大家分享一篇iOS 修改alertViewController弹框的字体颜色及字体的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • iOS中常见的视图和图片处理示例详解

    iOS中常见的视图和图片处理示例详解

    在日常ios开发中经常会遇到视图和图片的处理,下面这篇文章主要给大家总结介绍了关于iOS中常见的视图和图片处理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习和工作具有一定的参考学习价值,需要的朋友可以参考下。
    2017-10-10
  • 总结iOS实现渐变颜色的三种方法

    总结iOS实现渐变颜色的三种方法

    这篇文章主要给大家总结了iOS实现渐变颜色的三种方法,分别是利用CAGradientLayer实现渐变、Core Graphics相关方法实现渐变以及用CAShapeLayer作为layer的mask属性实现,大家可以根据自己的需要选择使用,下面来一起看看吧。
    2016-10-10
  • iOS实现手势解锁操作

    iOS实现手势解锁操作

    这篇文章主要为大家详细介绍了iOS实现手势解锁操作功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • iOS10添加本地推送(Local Notification)实例

    iOS10添加本地推送(Local Notification)实例

    这篇文章主要为大家详细介绍了iOS10添加本地推送(Local Notification)实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • iOS中的集合该如何弱引用对象示例详解

    iOS中的集合该如何弱引用对象示例详解

    这篇文章主要给大家介绍了关于在iOS中的集合该如何弱引用对象的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来依稀学习学习吧。
    2017-09-09
  • iOS中UILabel实现长按复制功能实例代码

    iOS中UILabel实现长按复制功能实例代码

    在iOS开发过程中,有时候会用到UILabel展示的内容,那么就设计到点击UILabel复制它上面展示的内容的功能,也就是Label长按复制功能,下面这篇文章主要给大家介绍了关于在iOS中UILabel实现长按复制功能的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • IOS开发压缩后图片模糊问题解决

    IOS开发压缩后图片模糊问题解决

    这篇文章主要为大家介绍了IOS开发压缩后图片模糊问题解决实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • iOS中的UISlider滑块组件用法总结

    iOS中的UISlider滑块组件用法总结

    不仅是滑动开关,UISlider组件也是常用的进度条制作工具,这里我们就一起来看一下iOS中的UISlider滑块组件用法总结,需要的朋友可以参考下
    2016-06-06
  • IOS 中弹框的实现方法整理

    IOS 中弹框的实现方法整理

    这篇文章主要介绍了IOS 中弹框的实现方法整理的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09

最新评论