objective-c中,当一个类使用到另一个类时,并且在类的头文件中需要创建被引用的指针时,
如下面代码:
A.h文件
#import "B.h"
@interface A : NSObject {
B *b;
}
@end
为了简单起见:A类是引用类,B类是被引用类,这里先不考虑A类的实现文件。
通常引用一个类有两种办法:
一种是通过#import方式引入;另一种是通过@class引入;
这两种的方式的区别在于:
1、#import方式会包含被引用类的所有信息,包括被引用类的变量和方法;@class方式只是告诉编译器在A.h文件中
B *b
只是类的声明,具体这个类里有什么信息,这里不需要知道,等实现文件中真正要用到时,才会真正去查看B类中信息;
2、使用@class方式由于只需要只要被引用类(B类)的名称就可以了,而在实现类由于要用到被引用类中的实体变量和方法,所以需要使用#importl来包含被引用类的头文件;
3、通过上面2点也很容易知道在编译效率上,如果有上百个头文件都#import了同一个文件,或者这些文件依次被#improt(A->B, B->C,C->D…),一旦最开始的头文件稍有改动,后面引用到这个文件的所有类都需要重新编译一遍,这样的效率也是可想而知的,而相对来讲,使用@class方式就不会出现这种问题了;
4、对于循环依赖关系来说,比方A类引用B类,同时B类也引用A类,B类的代码:
#import "A.h"
@interface B : NSObject {
A *a;
}
@end
当程序运行时,编译会报错,

当使用@class在两个类相互声明,就不会出现编译报错。
由上可知,@class是放在interface中的,只是在引用一个类,将这个被引用类作为一个类型,在实现文件中,如果需要引用到被引用类的实体变量或者方法时,还需要使用#import方式引入被引用类。
如:
A.m文件
#import "A.h"
#import "B.h"
@implementation A
......
转载自:http://jordy.easymorse.com/?p=757
分享到:
相关推荐
19. Import指令:在Objective-C中,@import指令用于导入头文件,这与C语言中的#include指令类似,但通常更为高效。 20. 预处理器指令:Objective-C代码中使用了诸如#import、#define等预处理器指令,这些指令在编译...
Objective-C是基于C语言的,主要用于构建iOS和macOS应用程序,而Objective-C++则是Objective-C的一个扩展,它引入了C++的特性,使得开发者可以同时利用Objective-C的动态特性和C++的面向对象编程能力。 ### ...
尽管Objective-C主要与Apple的平台(如iOS和macOS)相关联,但有时候,出于某些原因(比如团队协作或个人偏好),开发者可能需要在非Apple的操作系统(如Windows)上构建Objective-C应用程序。本文将详细介绍如何在...
理解`#import`、`@class`、`@interface`、`@implementation`、`@protocol`、`@property`等语法关键字至关重要。 3. **Foundation框架**:Objective-C的许多功能依赖于Foundation框架,它提供了基本的数据类型、集合...
// A sample class demonstrating good Objective-C style. All interfaces, // categories, and protocols (read: all top-level declarations in a header) // MUST be commented. Comments must also be adjacent...
### Objective-C的语法与Cocoa框架 #### 一、Objective-C简介 Objective-C是一种通用、面向对象的编程语言,它是苹果公司 macOS 和 iOS 操作系统的主要开发语言。Objective-C是在C语言的基础上添加了面向对象的...
### Objective-C基础知识与核心概念 #### 一、Objective-C简介 Objective-C是一种面向对象的编程语言,它是在标准C的基础上发展起来的。Objective-C的主要特点在于它支持面向对象的特性,如封装、继承和多态等。...
### Windows下的Objective-C集成开发环境的搭建 #### 一、前言 Objective-C是一种主要应用于苹果操作系统的编程语言,尤其适用于iOS和OS X应用程序的开发。对于初学者来说,搭建一个良好的集成开发环境...
### Objective-C的语法与Cocoa框架 #### 一、Objective-C简介 Objective-C是一种通用、面向对象的编程语言,它是苹果公司 macOS 和 iOS 操作系统的主要开发语言。Objective-C 是在 C 语言的基础上添加了面向对象的...
Objective-C是一种面向对象的编程语言,基于C语言并扩展了许多特性,主要用于开发苹果的macOS和iOS操作系统下的应用程序。Objective-C支持动态消息传递机制,使得它可以实现运行时多态性。 #### 二、环境搭建与配置...
### Objective-C 快速入门详解 #### 一、Objective-C 基本概念及语法介绍 **Objective-C** 是一种面向对象的编程语言,它基于 C 语言,并加入了面向对象的功能。Objective-C 被广泛应用于 macOS 和 iOS 应用程序...
### Objective-C 速查手册(ARC版):深入解析与应用 #### 一、概览 Objective-C是一种通用、面向对象的编程语言,是开发苹果iOS和macOS平台应用程序的主要语言之一。它在C语言的基础上增加了面向对象的功能,使得...
在iOS应用开发中,...通过这些方法,你可以灵活地在Swift项目中使用Objective-C编写的`YTToast`库,为用户提供直观且易于理解的反馈信息。记得在实际应用中根据项目需求调整和定制这些示例,以达到最佳的用户体验。
根据提供的文件信息,我们可以归纳出一系列与Objective-C相关的知识点,主要围绕书中的章节内容展开。以下是对这些知识点的详细解析: ### 1. Getting Started 本章为读者提供了Objective-C编程语言的基础入门介绍...
Objective-C的语法和设计深受Smalltalk的影响,同时它还支持标准的C语言语法。Objective-C是苹果公司在其操作系统如macOS和iOS中的首选开发语言之一,尤其是在iPhone应用开发中占据着核心地位。 #### 二、Objective...
Objective-C是一种面向对象的编程语言,它在C语言的基础上添加了面向对象的功能,是苹果公司用于开发iOS和macOS应用程序的主要语言之一。Objective-C 2.0作为该语言的一个重要版本,引入了许多新特性来简化开发流程...
1. **Objective-C基础**:Objective-C的语法与C语言非常相似,但增加了许多面向对象的特性。它引入了"@"符号来标识字符串和消息,以及"#import"来包含头文件。Objective-C的关键字如"class"、"interface"、...
Objective-C是一种基于C语言的面向对象编程语言,由Brad J. Cox在20世纪80年代初设计,并在2007年随着ObjC 2.0的发布,被广泛应用于苹果公司的iOS和macOS平台。它以SmallTalk的动态特性和C语言的静态类型系统为基础...
### Objective-C培训资料知识点概述 #### 一、程序整体语法结构 Objective-C 是一种面向对象的编程语言,它是对标准 C 语言的扩展,增加了面向对象功能和动态...理解这些基础知识对于深入学习 Objective-C 至关重要。