二者的区别在于:
1.import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你。
2.在头文件中, 一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。
3.在编译效率方面考虑,如果你有100个头文件都#import了同一个头文件,或者这些文件是依次引用的,如A–>B, B–>C, C–>D这样的引用关系。当最开始的那个头文件有变化的话,后面所有引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间。而是用@class则不会。
4.如果有循环依赖关系,如:A–>B, B–>A这样的相互依赖关系,如果使用#import来相互包含,那么就会出现编译错误,如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现。
所以,一般来说,@class是放在interface中的,只是为了在interface中引用这个类,把这个类作为一个类型来用的。 在实现这个接口的实现类中,如果需要引用这个类的实体变量或者方法之类的,还是需要import在@class中声明的类进来.
分享到:
相关推荐
Objective-C是基于C语言的,主要用于构建iOS和macOS应用程序,而Objective-C++则是Objective-C的一个扩展,它引入了C++的特性,使得开发者可以同时利用Objective-C的动态特性和C++的面向对象编程能力。 ### ...
19. Import指令:在Objective-C中,@import指令用于导入头文件,这与C语言中的#include指令类似,但通常更为高效。 20. 预处理器指令:Objective-C代码中使用了诸如#import、#define等预处理器指令,这些指令在编译...
尽管Objective-C主要与Apple的平台(如iOS和macOS)相关联,但有时候,出于某些原因(比如团队协作或个人偏好),开发者可能需要在非Apple的操作系统(如Windows)上构建Objective-C应用程序。本文将详细介绍如何在...
- **Method与Message**:在Objective-C中,方法(Method)和消息(Message)这两个概念可以互换,但在实际操作中,消息具有更多的灵活性,可以动态地转发给其他对象。 通过以上知识点的介绍,读者可以对Objective-C有一...
- **`#import <Foundation/Foundation.h>`**: 这行代码用于导入Foundation框架,这是一个基础库,包含了Objective-C中大量常用的基础类和功能。 - **`@autoreleasepool`**: 这是一个自动释放池的声明。Objective-C中...
Objective-C 被广泛应用于 macOS 和 iOS 应用程序开发。 ##### 1. 创建 Class 在 Objective-C 中,通过定义类来组织代码。类是对象的模板,对象则是类的实例。下面是一个简单的类定义示例: ```objective-c @...
Objective-C中类的定义分为接口(interface)和实现(implementation)两部分。接口定义了一个类的公共API,即类的成员变量和方法声明;而实现则包含了这些方法的具体实现细节。例如,在`Fraction.h`文件中定义了一个`...
Objective-C的语法和设计深受Smalltalk的影响,同时它还支持标准的C语言语法。Objective-C是苹果公司在其操作系统如macOS和iOS中的首选开发语言之一,尤其是在iPhone应用开发中占据着核心地位。 #### 二、Objective...
Objective-C是一种强大的面向对象的编程语言,特别是在Apple的iOS和macOS开发中占据主导地位。这本书"Objective-C编程(第四版)"是学习这一技术的重要资源。以下是基于书名和描述的一些关键知识点: 1. **面向对象...
Objective-C是一种面向对象的编程语言,基于C语言并扩展了许多特性,主要用于开发苹果的macOS和iOS操作系统下的应用程序。Objective-C支持动态消息传递机制,使得它可以实现运行时多态性。 #### 二、环境搭建与配置...
Objective-C是一种基于C语言的扩展,强调动态特性和面向对象设计,是Mac OS X和iOS开发的主要语言。Cocoa是Mac OS X的主要应用框架,包含一系列Objective-C类,用于快速构建功能丰富的OS X应用程序。Apple提供了一套...
此外,Objective-C支持条件编译指令,如`#import`和`#include`,用于避免重复导入相同头文件的问题。 #### 六、类与对象 Objective-C中的类是创建对象的基础。每个类都定义了一组属性和方法,它们构成了该类的对象...
在Objective-C中,每个类由两部分组成:类头文件和类实现文件。头文件通常包含类的声明,即属性和方法的签名,用于被其他类引用。 ```objc // 导入其他头文件 #import "AnyHeaderFile.h" // 声明类 @interface ...
本章深入讲解了Objective-C中的类(Class)概念,包括类的定义、继承关系、属性(Property)等基本元素。读者将学会如何创建自己的类,并利用Objective-C的面向对象特性来构建复杂的程序结构。此外,还会涉及到实例...
- **YES 和 NO:** 在 Objective-C 中,`YES` 和 `NO` 分别代表 `true` 和 `false`。它们被定义为宏,其中 `YES` 宏展开为 `1`,`NO` 宏展开为 `0`。 - **BOOL 类型:** Objective-C 中的 `BOOL` 类型与 C++ 的布尔...
- **@符号**:Objective-C使用`@`符号引入特殊的关键字和语法,如`@class`用于声明类,`@interface`定义接口,`@implementation`实现接口。 - **NSLog()**:用于输出日志信息,方便调试。 - **BOOL**:Objective-C...
在Xcode中,确保你的项目已经启用“Swift与Objective-C混合编程”(在项目的Build Settings中,搜索"Objective-C Bridging Header"并配置一个桥接头文件)。 接着,我们将通过CocoaPods来安装`YTToast`。在你的`...