前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >熟悉OC--2:在类的头文件中尽量少引入其他头文件

熟悉OC--2:在类的头文件中尽量少引入其他头文件

作者头像
xy_ss
发布2023-11-22 08:16:50
1660
发布2023-11-22 08:16:50
举报
文章被收录于专栏:浮躁的喧嚣

OC中类的标准方式

代码语言:javascript
复制
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic,copy) NSString *firstName;
@property (nonatomic,copy) NSString *lastName;
@end

#import "Person.h"
@implementation Person
@end

利用@Class在类的头文件中可以减少编译时间

当我们在实际工作中,可能需要创建一个名为Student的新类,然后在Person的类中应该有一个Student的属性,一般做法是引入在Person.h文件中引入Student.h

代码语言:javascript
复制
#import <Foundation/Foundation.h>
#import "Student.h"
@interface Person : NSObject
@property (nonatomic,copy) NSString *firstName;
@property (nonatomic,copy) NSString *lastName;
@property (nonatomic,strong) Student *stu;
@end

#import "Person.h"
@implementation Person
@end
  • 但是这样做不太好,因为我们不需要知道Student类的全部实现细节,只需要知道有一个类名叫Student就好,所以应该使用@class引入,这种方式叫“向前声明”该类
代码语言:javascript
复制
#import <Foundation/Foundation.h>
@class Student;
@interface Person : NSObject
@property (nonatomic,copy) NSString *firstName;
@property (nonatomic,copy) NSString *lastName;
@property (nonatomic,strong) Student *stu;
@end

#import "Person.h"
#import "Student.h"
@implementation Person

@end
  • 将引用头文件的时机尽量延后,这样可以减少类的使用者所需引入的头文件数量。假设要是把Student.h引入到Person.h中,那么就会引入Student.h的所有文件,有很多根本用不到的内容,反而增加了编译的时间

有时候必须在头文件中引入其他头文件

如果你写的类, 集成某个类, 则必须引入定义那个父类的头文件,或者是你声明的类遵从某个协议, 那么该协议必须有完整定义, 而且不能用向前声明, 向前声明只能告诉编译器有某个协议, 而此时编译器却需要知道该协议中定义的方法

参考

Effective+Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OC中类的标准方式
  • 利用@Class在类的头文件中可以减少编译时间
  • 有时候必须在头文件中引入其他头文件
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档