`
pxq19890719
  • 浏览: 52410 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

IOS开发技术之──头文件引用(@class/#import/#include)

阅读更多
一、 Objective-C 中 #import 和 #include 的区别  

预编译指令
Objective-C:#import
C,C++:#include
#import由gcc编译器支持

在 Objective-C 中,#import 被当成 #include 指令的改良版本来使用。除此之外,#import 确定一个文件只能被导入一次,这使你在递归包含中不会出现问题。

使用哪一个还是由你来决定。一般来说,在导入 Objective-C 头文件的时候使用 #import,包含 C 头文件时使用 #include。比如:

#import <foundation /Foundation.h>

#include <asl .h>
#include <mach /mach.h>

#import比起#include的好处就是不会引起交叉编译
二、@class是用来做类引用的
@class就是告诉编译器有这么一个类,至于类的定义是啥不知道
@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import

举个例子说明:
在ClassA.h中
#import ClassB.h 相当于#include整个.h头文件。如果有很多.m文件#import ClassA.h,那么编译的时候这些文件也会#import ClassB.h增加了没必要的#import,浪费编译时间。在大型软件中,减少.h文件中的include是非常重要的。

如果
只是@class ClassB 那就没有include ClassB.h。仅需要在需要用到ClassB的ClassA.m文件中 #import ClassB.h

那么什么时候可以用@class呢?
如果ClassA.h中仅需要声明一个ClassB的指针,那么就可以在ClassA.h中声明
@ClassB
...
ClassB *pointer;
分享到:
评论
1 楼 lixing333 2012-08-07  
什么叫“仅需要声明一个指针”?如果只声明一个指针的话,好像也没啥用

相关推荐

    iOS开发中#import、#include和@class的区别解析

    在iOS开发中,我们经常会遇到使用`#import`、`#include`以及`@class`的情况,它们在Objective-C编程中扮演着不同的角色。这里我们将深入解析它们之间的区别。 首先,`#import`是Objective-C特有的指令,主要用于...

    IOS苹果开发面试宝典2018

    ### IOS苹果开发面试宝典2018知识点详解 #### 1. Objective-C类的继承与接口实现 - **多重继承**: Objective-C不支持传统的多重继承。这意味着一个类不能直接继承自多个父类。 - **接口实现**: 虽然没有传统意义上...

    IOS开发的技术和要点

    iOS开发涉及的主要技术是Objective-C,这是一种面向对象的语言,它在语法上与Java和C++有很大的差异。Objective-C是Apple的 Cocoa 和 Cocoa Touch 框架的基础,用于构建iOS和macOS的应用程序。 1. **Objective-C的...

    iosiOS面试宝典

    - **区别**: #import会实际导入类的头文件,而@class仅告知编译器类的存在,具体实现则在运行时加载。 #### 四、属性修饰符的作用 - **readwrite**: 默认属性,表示生成getter和setter方法。 - **readonly**: 只...

    iOS面试题及答案

    iOS 面试题及答案,涵盖了 OC 语言的基本特点、#import 与 @class 的区别、类目优缺点、内存管理的基本原则、ARC 技术、垃圾回收机制、深浅复制、堆栈区差别、用户自定义对象的拷贝、定义属性时的赋值策略、强弱引用...

    iOS常见笔试题.pdf

    iOS开发是苹果公司为其操作系统iOS设计的应用程序开发平台,它广泛应用于iPhone、iPad及iPod Touch等设备的软件开发。在iOS开发的面试过程中,通常会涉及到一些基础知识点的考核。以下将详细阐述iOS开发笔试题集中...

    ios开发ios基础开发面试题.txt

    它是苹果公司开发iOS和macOS应用的主要语言之一。 - **特点**: - 动态类型:变量可以在运行时绑定到任何类型的对象上。 - 消息传递:方法调用被视为向对象发送消息的过程。 - 类与对象:支持类继承以及多级继承...

    2018iOS面试题汇总

    ### 2018 iOS面试题汇总解析 #### 一、设计模式的理解及常见类型 设计模式是指在软件开发过程...以上总结了2018年iOS面试题中涉及的一些核心知识点,希望能够帮助开发者更好地理解和掌握iOS开发中的重要概念和技术。

    ios开发面试题

    `#import` 和 `#include` 都可以和 `@class` 结合使用,但在实际开发中,更倾向于使用 `#import`。 #### 三、Objective-C中的属性 1. **属性与成员变量**:Objective-C中的属性是用来声明一个类的公共接口的一部分...

    iOS最新面试题及答案(7.29)

    在iOS开发中,面试常常会涉及到一些核心概念和技术细节。本文将深入探讨其中一些常见的面试题,并给出相应的答案。 首先,我们来讨论一下库文件在iOS开发中的作用。程序的编译过程通常包括预处理、编译、汇编和链接...

    iOS常见面试题

    #### 一、`#import` 跟 `#include`、`@class` 有什么区别? 在Objective-C中,`#import` 和 `#include` 都可以用来导入其他文件,但它们之间存在一些重要的区别。 - **`#import`**: - `#import` 会将指定的...

    ios中文开发

    Objective-C是一种面向对象的编程语言,它是苹果公司在开发iOS和macOS应用程序时的主要语言之一。Objective-C结合了C语言的基础语法与Smalltalk的面向对象特性,使得开发者能够更加高效地构建复杂的软件系统。本文将...

    2021iOS笔试题总结.pdf

    #include和#import都能够导入头文件,但#import能够防止头文件的交叉包含,确保头文件只被导入一次。而#import和@class的区别在于,#import会包含类的所有信息,包括成员变量和方法,而@class只告诉编译器后面提到...

    ios 笔试题

    - `#import`:引入头文件,相当于#include,但避免重复导入。 - `@class`:声明类,不引入头文件,仅告知编译器类的存在。 - 头文件中的`#ifndef/#define/#endif`用于防止头文件被多次包含,提高编译效率。 12. ...

    2018最新iOS 面试题

    接着,编译预处理指令#include和#import的区别在于,#import可以避免头文件被重复导入,而它们都是为了包含其他源文件的代码。而#import与@class的区别则体现在它们使用的方式和目的上:#import会包含类的所有定义,...

    iOS面试题.doc

    在iOS面试中,掌握Objective-C的基本知识和UI概念至关重要。以下是一些重点知识点的详细...理解并熟练掌握这些知识点对于iOS开发者来说非常重要,因为它们是iOS应用开发的基础,也是面试官考察候选人技术能力的关键点。

    智游面试题10.27副本.pdf

    - **@class与#import**: 在类声明时使用`@class`而不是`#import`来声明类的前向引用,以减少编译时间。实际使用时再通过`#import`导入实现文件。 **3.2 字符串操作** - **NSString与NSMutableString**: `NSString`...

    iOS面试 面试必备神器

    - `#include`和`#import`都可以用来导入其他文件,但`#import`通常用于导入头文件,而`#include`则更加通用。 - `#import`的一个重要特性是它可以防止同一个头文件被多次导入到同一文件中,从而提高了编译速度并...

    java棒打猪头游戏源码-iOS-Interview:iOS-面试

    java棒打猪头游戏源码 iOS-Interview 注记: ...import是Objective-C导入头文件的关键字,#include是c/c++导入头文件的关键字,使用#import头文件会自动导入一次,不会重复导入,相当于#include和#pragma

Global site tag (gtag.js) - Google Analytics