我确实尝试谷歌这个,但实际上什么都没发现。来自强大的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;
表达式)
我想我错过了一些明显的东西,但它是什么?
答案 0 :(得分:4)
试试这个:
- (Class)targetStateClass
{
return [ValveTargetState class];
}
答案 1 :(得分:1)
假设ValveTargetState
是最终从NSObject
继承的类,
[ValveTargetState class]
或
[ValveTargetState self]
将为您提供指向ValveTargetState
的类对象的指针。
直接使用ValveTargetState
会好得多,但不幸的是,类的名称不是Objective-C中的有效表达式。