iOS开发 impor和@class

本文详细介绍了在Objective-C编程中使用@class声明而非#import头文件的优势,包括提高编译效率、解决循环依赖问题及正确声明类指针的方法。

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

原文地址http://blog.youkuaiyun.com/yangbingbinga/article/details/38536717


在OC中,导入(import)头文件之后,会产生很多的依赖关系,产生依赖关系的原因是,OC需要某些信息才能正常工作,比如:在一个类的.h中或者.m需要用到某些实例变量或者方法;

但有时候我们在.h文件中只需要使用类名即可,不需要知道那个类的具体的方法,和实例变量,这样在OC中的解决方案是使用@class只是说明一下,这是个类而已,只需要使用指针来引用他.而不需要导入该文件,这样也不会导致编译错误!


好处:

  1. 1.在.h类的声明文件中,如果只是用了类的指针而没有使用类的方法和实例变量,可以使用@class代替#import,可以避免没必要的引用.  
  2.   
  3. 2.使用#import来引入该类的话,首先需要编译该类,而使用@class不需要,他只是说明这是个类而已,不需要提前编译,提高了编译效率!  
  4.   
  5. 3.但是如果使用了外部类的方法,则只能使用#import不能使用@class否则,编译器会找不到该方法  
  6.   
  7. 4.对于循环依赖关系,只能使用@class:如A.h导入了B.h,B.h导入A.h这样一个头文件的编译需要等到对方编译才行,导致了编译错误,这时候只能使用@class!  
  8.   
  9. 5.如果在定义一个类时,需要提前使用类来声明一个对象,那么就必须使用@class进行声明,以免导致编译错误;  
  10. 如果是  协议 同理,使用@protocol提前声明  

[objc]  view plain copy print ?
  1. 原文地址http://blog.youkuaiyun.com/yangbingbinga/article/details/38536717  

  1. 1.在.h类的声明文件中,如果只是用了类的指针而没有使用类的方法和实例变量,可以使用@class代替#import,可以避免没必要的引用.  
  2.   
  3. 2.使用#import来引入该类的话,首先需要编译该类,而使用@class不需要,他只是说明这是个类而已,不需要提前编译,提高了编译效率!  
  4.   
  5. 3.但是如果使用了外部类的方法,则只能使用#import不能使用@class否则,编译器会找不到该方法  
  6.   
  7. 4.对于循环依赖关系,只能使用@class:如A.h导入了B.h,B.h导入A.h这样一个头文件的编译需要等到对方编译才行,导致了编译错误,这时候只能使用@class!  
  8.   
  9. 5.如果在定义一个类时,需要提前使用类来声明一个对象,那么就必须使用@class进行声明,以免导致编译错误;  
  10. 如果是  协议 同理,使用@protocol提前声明  

[objc]  view plain copy print ?
  1. 原文地址http://blog.youkuaiyun.com/yangbingbinga/article/details/38536717  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值