在iOS开发过程中,我们在一些源码中经常会看到导包的时候有的用#import进行导包,但是有的的时候也会看到用@class进行导包,那么这两种方式有什么区别呢?
首先说一下最主要的区别:
@class的应用场景主要有两种:
@class UIBezierPath, UIEvent, UIWindow, UIViewController, UIColor, UIGestureRecognizer, UIMotionEffect, CALayer, UILayoutGuide;
下面着重说一下第二种场景,对于循环依赖关系来说,比方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
如对本文有疑问, 点击进行留言回复!!
iOS14Beta3续航怎么样 iOS14Beta3续航能力介绍
iOS14Beta3稳定性怎么样 iOS14Beta3升级建议介绍
uniapp编写H5界面放入IOS全面屏原生导航栏盖住H5界面
游戏APP解决方案,8月1日起下架无版号ios手游的出路在哪?
网友评论