`
yangwei0915
  • 浏览: 465356 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

object c中import和@class的区别

 
阅读更多

object c中import和@class都可以从引入一个类。 二者的区别在于:

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中声明的类进来.

 

使用@class,只能用来定义变量,不能继承,也不能调用该类的方法和变量。使用#import则可以进行。

分享到:
评论

相关推荐

    iPhone笔记-Object-c基础

    在Objective-C(Object-c)编程中,它是Apple的Cocoa和Cocoa Touch框架的基础,主要用于开发iOS和macOS应用程序。本文将深入探讨Object-c的基础知识,包括指令、类、实例化、访问权限、方法等方面。 1. **指令与...

    MinGW Object-C编译器

    Object-C是Objective-C语言的简称,它是C语言的一个扩展,主要用于开发Apple的macOS和iOS操作系统上的应用程序。MinGW Object-C编译器就是MinGW中针对Objective-C语言的编译工具。 安装MinGW Object-C编译器的过程...

    objectC类的声明和实现

    通过上述介绍,我们了解了Object-C中类的基本结构以及属性的声明和使用方法。在实际开发过程中,合理地利用这些概念可以帮助开发者构建出高效且易于维护的应用程序。无论是对于初学者还是有经验的开发者来说,掌握...

    Object C调用c++例子

    在iOS和Mac开发中,Objective-C(Object C)和C++是两种常见的编程语言。Objective-C作为Apple的原生编程语言,广泛用于构建iOS和Mac应用程序,而C++则因其强大的性能和广泛的库支持,被用于实现底层算法或游戏引擎...

    object-c基础教程

    - **nil**: Object-C中的空值表示,不同于C/C++中的`NULL`。 - **BOOL**: 在Object-C中,布尔类型不是语言的一部分,而是通过`Foundation`框架提供的。 - **#import vs #include**: 使用`#import`而非`#include`来...

    Object-C+经典入门教程

    ### Object-C+经典入门教程知识点概览 #### 开始篇:环境配置与基础知识 - **下载教学资源**:初学者可从提供的`objc.tar.gz`下载所有教学代码,便于实践学习。 - **环境设定**: - **Linux/FreeBSD**:需安装...

    由C#转Object-C开发入门基础

    Objective-C中推荐使用`#import`而不是`#include`,这是因为`#import`可以帮助减少重复导入的问题。 - **@interface**:用于定义一个类。例如,在C#中定义一个简单的类: ```csharp public class Kids : System....

    java和object C都可以用的AES加密算法

    在标题提到的"java和object C都可以用的AES加密算法"中,我们关注的是一个跨平台的加密解决方案,它允许开发者在Java和Objective-C这两种不同的编程语言中实现相同的安全标准。AES(Advanced Encryption Standard)...

    object-c基础教程移动版2.pdf

    但Objective-C的BOOL类型包含了YES和NO,而不是C语言中的TRUE或FALSE,并且是定义在Foundation类库中的。 19. #import与#include: 在Objective-C中推荐使用#import来代替#include,因为#import能防止头文件的重复...

    Object-C中文版

    - **兼容C语言**:Objective-C兼容C语言,这意味着可以在Objective-C程序中直接使用C代码。 - **动态性**:Objective-C是一种动态类型语言,对象可以在运行时确定其类型并响应消息。 - **开源**:Objective-C的...

    object-c基础教程.pdf

    - **#import vs #include**: 在Objective-C中推荐使用`#import`来包含头文件,因为它能自动处理文件包含的问题,避免重复包含。 - **方法(Methods)与消息(Messages)**: - 在Objective-C中,方法和消息可以互换使用...

    Object-C 疑问解答

    ### Object-C 疑问解答 #### 1. 关于本 FAQ **1.1 我在哪里可以找到本 FAQ 的最新版本?** 本 FAQ 的最新版本可以在以下位置找到: - comp.lang.objective-c 新闻组 - comp.answers 和 news.answers 新闻组 - 在 ...

    Object类和Scanner类

    ### Object类和Scanner类 #### 一、Object类详解 ...通过以上介绍可以看出,`Object` 类和 `Scanner` 类分别代表了Java中对象的基本行为和简单的输入处理功能,它们都是Java编程不可或缺的一部分。

    CAD_Import_VCL_6.1.rar_AutoCAD DWG_TsgDXFImage_delphi dwg_object

    CAD Import VCL 6.1 New features: - AutoCAD&Ouml DWG 2007 file format is supported. - AutoCAD&Ouml PROXY (including AEC) entities are supported. - HPGL/HPGL2 file format - Bezier splines are ...

    Object-C_经典入门教程

    "程序入手,介绍了Objective-C的基本语法,比如`#import`指令,它相当于C语言中的`#include`,但更安全,能防止头文件重复导入。Objective-C中,`nil`是一个特殊值,可以接收消息,而不会导致程序崩溃,这与C/C++中...

    使用JSONArray.fromObject所需要的jar包

    在Java开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据传输。当你需要将Java对象转换为JSON数组时,`JSONArray.fromObject()` 方法是常用的工具。这个方法来自 `org.json....

    Object-C 基础语法中文版

    ### Object-C 基础语法中文版 #### 开始吧 **下载这篇教学** 所有这篇初学者指南的原始码都可以由objc.tar.gz下载。这篇教学中的许多例子都是由Steve Kochan在他的书《Objective-C Programming》中撰写的。如果你...

    java反射实现Object转json

    总结起来,虽然Java反射机制可以用于实现Object转json,但在实际开发中,为了效率和便捷性,通常建议使用专门为JSON设计的库,如Gson、Jackson或Fastjson。反射在处理动态类型、元数据获取以及某些特定场景下有着...

    object-c 英文版

    Objective-C是一种面向对象的编程语言,它是基于C语言的一种扩展,主要用于开发苹果的iOS和OS X操作系统上的应用程序。Objective-C结合了C语言的高效性与Smalltalk语言的面向对象特性,使得它在苹果平台上非常流行。...

Global site tag (gtag.js) - Google Analytics