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自定义滑杆效果

    iOS自定义滑杆效果

    这篇文章主要为大家详细介绍了iOS自定义滑杆效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • iOS开发支付宝支付成功返回字符串的处理操作

    iOS开发支付宝支付成功返回字符串的处理操作

    很多朋友在做ios开发项目时,遇到支付宝支付成功返回字符串的处理操作不知道该怎么办,今天小编给大家分享实例代码,需要的朋友参考下
    2017-02-02
  • 总结IOS界面间跳转的几种方法

    总结IOS界面间跳转的几种方法

    前段时间被问到界面间的跳转有几种方式?想不到说的竟有点含糊其辞,于是就想总结一下。有句话说的好,“前人种树,后人乘凉”,目前作为一个乘凉者,我也希望能种一些树木,为代码世界营造一份清新。好了,话不多说,进入主题。
    2016-08-08
  • Objective-C中的语法糖示例详解

    Objective-C中的语法糖示例详解

    开发过程中我特别喜欢用语法糖,原因很简单,懒得看到一堆长长的代码,但语法糖简单却不那么简单,下面这篇文章主要给大家介绍了关于Objective-C中语法糖的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2018-01-01
  • Xcode中Info.plist字段详解

    Xcode中Info.plist字段详解

    我们通过本篇文章给大家整理了Xcode中Info.plist字段的详细内容,有需要的朋友学习下。
    2018-01-01
  • Xcode 升级导致插件失效的解决办法

    Xcode 升级导致插件失效的解决办法

    这篇文章主要介绍了Xcode 升级导致插件失效的解决办法的相关资料,需要的朋友可以参考下
    2016-10-10
  • iOS轻点、触摸和手势代码开发

    iOS轻点、触摸和手势代码开发

    这篇文章主要为大家详细介绍了iOS轻点、触摸和手势代码开发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • iOS开发教程之Status Bar状态栏设置的方法汇总

    iOS开发教程之Status Bar状态栏设置的方法汇总

    iOS 的 Status Bar 状态栏是一个比较坑的地方,所以下面这篇文章主要给大家介绍了关于iOS开发教程之Status Bar状态栏设置的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-08-08
  • IOS改变UISearchBar中搜索框的高度

    IOS改变UISearchBar中搜索框的高度

    这篇文章主要介绍了IOS改变UISearchBar中搜索框的高度的相关资料,需要的朋友可以参考下
    2016-01-01
  • 谈谈为何iOS开发别用宏来定义常量

    谈谈为何iOS开发别用宏来定义常量

    最近在工程里看到很多不规范的使用,于是来写一篇博客来让不是很清楚的小朋友们,使用正确的规范开发ios,少埋点坑。
    2016-08-08

最新评论