Mie*_*iek 1 c++ cocoa objective-c
有人可以解释使用#import语句包含额外的头文件和使用@class之间的区别.例如
//MyClass.h
#import <Foundation/foundation.h>
#import "someOtherClass.h"
Run Code Online (Sandbox Code Playgroud)
要么
//MyClass.m
#import"MyClass.h"
@class someOtherClass
implementation
Run Code Online (Sandbox Code Playgroud)
当我尝试使用第二种方法时,它并不总是有效.
如果相同的概念适用于同一场景的C++,我现在也想
谢谢
@class被称为前向声明,表示您想使用该类型,但没有任何接口细节(即,您不知道它的方法和属性).
#import是一个预处理器语句(非常类似于#include),并且在编译时它被替换为您要导入的文件的内容,并且您可以访问该类型及其接口(即,您将了解它的方法和属性).
两者之间的区别在于您希望将多少信息传递给使用您的类的代码.
例子:
在.h文件中声明私有ivars时使用@class.将它与.m中的#import语句配对.这将加速编译,它确实有助于代码可读性.
当需要使用类的接口的详细信息来使用您的类时,请在.h文件中使用#import.这就是为什么你必须#import原型,因为你需要知道编译器的接口细节,以了解你是否正在实现所需的方法.
您还需要#import superclasses,因为多态性需要它的接口详细信息.
| 归档时间: |
|
| 查看次数: |
260 次 |
| 最近记录: |