在Objective-c中,当一个类需要引用另一个类,即建立复合关系的时候,需要在类的头文件中建立被引用类的指针。 如:
Car.h
1
2
3
4
5
6
7
8
9
|
#import
@interface Car:NSObject
{
Tire *tires[4];
Engine *engine;
}
...
|
实现类我们先省略,如果你直接这么编译,编译器会报错,告诉你它不知道Tire和Engine是什么。
这时候有两个选择,一个是import这两个被引用类的头文件,另一个是使用@class声明Tire和Engine是类名。 二者的区别在于:
- import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你。
- 在头文件中, 一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。 而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。
- 在编译效率方面考虑,如果你有100个头文件都#import了同一个头文件,或者这些文件是依次引用的,如A–>B, B–>C, C–>D这样的引用关系。当最开始的那个头文件有变化的话,后面所有引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间。而是用@class则不会。
- 如果有循环依赖关系,如:A–>B, B–>A这样的相互依赖关系,如果使用#import来相互包含,那么就会出现编译错误,如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现。
所以,一般来说,@class是放在interface中的,只是为了在interface中引用这个类,把这个类作为一个类型来用的。 在实现这个接口的实现类中,如果需要引用这个类的实体变量或者方法之类的,还是需要import在@class中声明的类进来.
如:
a.h
1
2
3
4
|
@class Rectangle;
@interface A : NSObject {
...
}
|
a.m
1
2
3
|
#import Rectangle
@implementation A
...
|
分享到:
相关推荐
"Objective-C编程全解最新版.pdf.zip"这个压缩包显然包含了关于Objective-C编程的全面教程,旨在帮助开发者深入理解并掌握这门语言。下面将详细阐述Objective-C的主要知识点。 1. **Objective-C基础**:Objective-C...
- 推荐阅读Steve Kochan的《Programming in Objective-C》以获取更深入的学习材料。 - 注意知识产权,未经许可不要复制和转载示例代码。 在学习Objective-C时,了解这些基本概念和机制是至关重要的。熟悉它们可以...
Objective-C继承了C语言的基础语法结构,并在此基础上增加了面向对象的特性,包括类(Class)、对象(Object)、消息传递(Message Passing)等概念。具体特点如下: 1. **动态性**: Objective-C是一种动态类型的语言,这...
通过对C语言基础的巩固、面向对象编程的理解以及Objective-C语言特性的深入学习,读者可以逐步建立起坚实的Objective-C编程技能。无论你是新手还是有经验的开发者,本书都将为你提供宝贵的指导和支持。
C++程序员需要理解Objective-C中的`@interface`、`@implementation`和`@end`关键字的用法,以及如何声明和实现方法。 2. 消息传递:Objective-C使用消息传递进行方法调用,这与C++的函数调用不同。在Objective-C中...
本指南旨在详细介绍Objective-C的运行时系统及其核心概念,帮助开发者更好地理解和利用这一特性。 #### 概述 Objective-C语言设计的核心理念之一是尽可能将决策推迟到运行时。这意味着Objective-C不仅需要一个...
《Objective-C Fundamentals》是由Manning出版社在2011年9月出版的一本深入讲解Objective-C编程语言的书籍。这本书旨在为初学者提供全面、扎实的Objective-C基础,同时也适合有一定经验的开发者巩固和深化对这门语言...
本教程的源码旨在帮助初学者深入理解Objective-C的基础概念和语法。 一、Objective-C 的基本结构 Objective-C 的程序主要由类(Class)和对象(Object)构成。类是数据和操作这些数据的方法的蓝图,而对象是类的...
通过阅读"Objective-C编程(第四版)"这本书,你将深入理解这些概念,并获得实践经验,从而成为一名熟练的Objective-C开发者。附带的`readme_Xcode.html`可能是关于如何使用Xcode的指南,而`Programming in ...
在学习Objective-C时,首先需要理解其基础语法,包括类(Class)、对象(Object)、消息传递(Message Passing)以及协议(Protocol)。类是面向对象编程的基础,定义了对象的结构和行为;对象则是类的实例,拥有...
在这一部分中,还涉及了函数、数组、结构体和指针等C语言元素,因为Objective-C建立在C语言之上,所以对这些基础概念的掌握对于学习Objective-C至关重要。 第二部分关注于Foundation框架的详细阐述。Foundation框架...
Objective-C是一种强大的面向对象编程语言,特别是在Apple的Mac OS X和iOS操作系统中广泛使用。它作为C语言的超集,引入了Smalltalk的类和消息传递机制,为开发者提供了丰富的功能和灵活性。"Learn Objective-C On ...
这篇“Objective-C 基础教程-中文版”是针对初学者和希望深入理解Objective-C的开发者设计的,旨在帮助他们掌握这一强大的编程工具。 一、Objective-C的基本概念 1. 类(Class):Objective-C中的核心是类,它是...
- 了解Runtime底层实现有助于理解Objective-C中的性能瓶颈所在,从而采取相应措施进行优化。 4. **错误处理和调试** - Runtime提供了一些工具和API来帮助开发者检测和修复运行时错误,比如检查方法是否存在、对象...
本章深入讲解了Objective-C中的类(Class)概念,包括类的定义、继承关系、属性(Property)等基本元素。读者将学会如何创建自己的类,并利用Objective-C的面向对象特性来构建复杂的程序结构。此外,还会涉及到实例...
这些示例大多来源于Steve Kochan的《Objective-C编程》,若需要更深入的学习,建议参考原书。 - **设定环境**: - **Linux/FreeBSD**: 需要安装GNUStep,并运行特定脚本来配置环境。具体步骤为执行`GNUstep.sh`脚本...
《Programming in Objective-C》是由Stephen G. Kochan所著的一本书,它介绍了Objective-C编程...这本书为开发者提供了详尽的学习资料,能够帮助他们深入理解Objective-C编程,并在苹果平台上开发出高质量的应用程序。
Class 类型、选择器和函数指针是 Objective-C 中非常重要的概念。Class 类型允许你访问类的元信息,而选择器则是用于发送消息的标识符。函数指针则是一种指向函数的指针类型,这对于实现某些设计模式非常有用。 ###...
本书《Objective-C 2.0程序设计》第三版提供了详细的入门教程,虽然为英文版,但对于希望深入了解Objective-C的开发者来说,是一本不可或缺的学习资料。通过掌握Objective-C的基础知识和面向对象编程的核心概念,...