在Objective C中,@class是什么以及何时使用该指令?
在Objective C中,@class是什么以及何时使用该指令?
这个问题在这里已经有了答案:
我非常困惑 @class 是什么?当我使用这个指令时它的作用是什么?
什么时候使用这个指令以及为什么要使用它?我没有找到任何合适的链接告诉我为什么、什么时候以及如何使用?请举个例子告诉我。
admin 更改状态以发布 2023年5月21日
它告诉编译器指定的类存在,这样它不会抱怨使用未知的类型。
委托协议的声明可能会说明这一点:
@class SomeClass; @protocol SomeClassProtocol@optional - (void)someClass:(SomeClass *)someClass didSomethingSpecial:(int)specialThing; @end @interface SomeClass: NSObject ... @end
现在,如果不使用@class
关键字,编译器将抱怨在协议方法中使用SomeClass
类型,因为它尚未声明。
但是一个主要的问题是它只适用于对象引用(即SomeClass *
),因为指向类型的指针不需要编译器了解类型的其他任何信息;例如,他不会适用于子类化:
这是非法的:
@class SomeClass; @interface SomeOtherClass: SomeClass ... @end