Objective-C学习--源文件结构

本文介绍了Objective-C编程中的一些实用技巧,包括如何将类拆分为接口和实现部分,使用@class关键字来创建向前引用以解决循环依赖问题,以及如何正确导入头文件来减少不必要的编译。这些技巧有助于提高代码质量和项目的可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 类拆分成 接口和实现部分

接口:类的@interface指令、公共struct定义、enum常量、#define和extern全局变量等   .h

实现:@implementation指令、全局变量的定义、私有struct等   .m

2. 导入头文件有两种不同的方法:

   使用引号导入:#import “Tire.h” 导入的是项目本地的头文件,可以编辑

   使用尖括号导入:#import <Cocoa/Cocoa.h> 用来导入系统头文件,属于系统,只读

3. 使用跨文件依赖关系

   依赖关系是两个实体之间的一种关系。在变成和开发过程中,经常会出现关于依赖关系的问题,依赖关系可以存在于两个类之间,如Slant6类因继承关系而依赖Engine类,如果Engine发生了变化,例如添加了一个新的实例变量,那么就需要重新编译Slant6来接收这个变化。

    导入头文件在头文件和进行导入的源文件之间建立了一种很强的依赖关系。如果这个头文件有任何变化,则所有依赖于它的文件都需要被重新编译,这样会在需要编译的文件中印发一连串的变化。

4. @class关键字

    它告诉编译器:这是一个类,所以我只需要通过指针来引用它,这样编译器就会“平静”下来,它并不需要知道关于这个类的更多信息,只要了解它是通过指针来引用的即可。

    @class Engine;

    @class建立了一个向前引用,就是再告诉编译器:相信我,以后你会知道这个类到底是什么,但是现在,你只需要知道这些。如果有循环依赖关系,@class也很有用,即A类使用B类,B类也是用A类,如果试图通过#import语句让这两个类互相引用,那么最后就会出现编译错误,但是如果在A.h中使用@class B,在B.h中使用@class A,那么这两个类就可以互相引用了

    继承不能用@class,因为编译器需要先知道所有关于超累的信息才能呢成功地为其子类编译@interface。它需要了解超类实例变量的配置(数据类型、代销和排序)。还记得吗?在子类中添加实例变量时,他们会被附加在超类实例变量的后面。然后编译器用这条信息来判断在内存的什么位置能找到这些实例变量,从每个方法调用自身的self就隐藏指针开始寻找,为了能够准确的计算出实例变量的位置,编译器必须先了解该类的所有内容。

 

转载于:https://www.cnblogs.com/cc-Cheng/p/3323924.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值