之前一直对这两个关键字有些疑问,没有仔细的区分。看来今天是躲不掉了,就好好学习了一下,其实也很简单。
使用@class时的目的就是不想暴露出更多的细节,只需要知道有这么一个type就行了,比如在一个头文件中定义一个新的类,这个新的类里面的成员是一个其他类的类型,但是由于这是在h文件中,只需要知道这个类型就行了,并不会调用这个类型中的方法,所以这时使用@class就行了。如下面的例子:
@class MyOtherClass;
@interface MyClass : NSObject
{
MyOtherClass *myIvar;
}
@end
而如果想实际调用某个类里面的方法还是需要熟悉的#import这个玩意儿的。
#import "MyOtherClass.h"
- (void)doSomething
{
[myIvar doSomethingElse];
}
其实之所以有这个疑问完全是因为我在看如何给SmartSocket中的XPGWifiSDK升级时遇到的疑问,当时看到h文件中有一个@class,当时就蒙住了,卧槽嘞,这是干嘛的啊,现在看完上面的理解之后再去看h文件,里面就明白了,里面使用了@class只是因为h文件中新创建的类使用@class后面声明的类型而已。并没有开始那么可怕了。