成都网站建设设计

将想法与焦点和您一起共享

iOS开发中class与#import有什么区别-创新互联

今天就跟大家聊聊有关iOS开发中class与#import有什么区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

成都创新互联公司技术团队十余年来致力于为客户提供成都做网站、成都网站制作、品牌网站设计营销型网站、搜索引擎SEO优化等服务。经过多年发展,公司拥有经验丰富的技术团队,先后服务、推广了千余家网站,包括各类中小企业、企事单位、高校等机构单位。

一 @class和#import的主要区别

首先说一下最主要的区别:

•使用#import引入一个类的头文件,编译时会将该类的头文件中的所有信息都引入,包含属性和方法;

•使用@class仅仅是告诉编译器这是一个类,并不会因入该类的其他信息,而我们所关心的也仅此一点,而不需要知道该类的内部有哪些属性和方法,因此使用@class可以提升编译性能

二 @class的应用场景

@class的应用场景主要有两种:

•一般情况下,我们在.h头文件中使用@class,可以以提升编译性能;而在.m实现文件中,往往就需要知道类的内部信息了,这时就需使用#import来引入这些信息;在iOS的很多源文件的.h文件中很多都采用@class的方式进行导包,例如在UIView.h文件中就有如下这样的代码:

@class UIBezierPath, UIEvent, UIWindow, UIViewController, UIColor, UIGestureRecognizer, UIMotionEffect, CALayer, UILayoutGuide;

•为了避免两个类之间循环引用,我们在某一个类的.h文件中用@class进行导入

下面着重说一下第二种场景,对于循环依赖关系来说,比方A类引用B类,同时B类也引用A类,例如下面这种情况,我们都用#import进行这种嵌套引用的代码在编译时是会报错。

//A.h文件
#import "B.h"
@interface A : NSObject
@property (strong, nonatomic) B *_b;
@end
//B.h文件
#import “A.h"
@interface B : NSObject
@property (strong, nonatomic) A *_a;
@end

为了解决这个问题,我们可以采用@class的方式进行引用,一个用#import一个用@class,或者两个都用@class都可以避免报错。

//A.h文件
@class B
@interface A : NSObject
@property (strong, nonatomic) B *_b;
@end
//B.h文件
@class A
@interface B : NSObject
@property (strong, nonatomic) A *_a;
@end

看完上述内容,你们对iOS开发中class与#import有什么区别有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联网站建设公司行业资讯频道,感谢大家的支持。

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:iOS开发中class与#import有什么区别-创新互联
标题URL:http://chengdu.cdxwcx.cn/article/dpddgg.html