从方法返回Objective-C类引用的语法?

时间:2014-01-24 21:45:01

标签: objective-c class

我确实尝试谷歌这个,但实际上什么都没发现。来自强大的Smalltalk背景,我认为以下情况会很好:

#import "ValveTargetState.h"

- (id) targetStateClass {
    return ValveTargetState;
}

- (void) targetIsActive:(BOOL)isActive {
    self.targetState = [[[self targetStateClass] alloc] initValve: self isActive: isActive];
    [self.targetState push];
}

基本上,我添加了一个方法,以便子类可以调整使用targetStateClass的内容。据我所知,就像Smalltalk一样,类也是ObjC中的对象。但Xcode告诉我

Unexpected interface name 'ValveTargetState': expected expression

(对于return ValveTargetState;表达式)

我想我错过了一些明显的东西,但它是什么?

2 个答案:

答案 0 :(得分:4)

试试这个:

- (Class)targetStateClass 
{
    return [ValveTargetState class];
}

答案 1 :(得分:1)

假设ValveTargetState是最终从NSObject继承的类,

[ValveTargetState class]

[ValveTargetState self]

将为您提供指向ValveTargetState的类对象的指针。

直接使用ValveTargetState会好得多,但不幸的是,类的名称不是Objective-C中的有效表达式。