在Objective-C中,我们可以有一个泛型或基类引用来调用不同的类方法吗?
问题描述:
在Objective-C,我们可以有一个类Foo和Bar类,然后像做在Objective-C中,我们可以有一个泛型或基类引用来调用不同的类方法吗?
Class aClass = [Foo class];
[aClass getURLString];
其中getURLString
是Foo类或酒吧的一个类的方法。换句话说,根据类调用不同的类方法,并且此类由变量引用。
Foo和Bar在本例中具有与NSObject相同的基类。我尝试使用上面的代码,它不会工作。如果我使用
id aClass = Foo;
或
id aClass = [Foo class];
它不会工作。我必须实例化一个虚拟对象吗? Objective-C可以不经实例化吗?
答
你正在尝试应该工作正常。例如,下面的工作:
Class NSStringClass = [NSString class];
NSString *string = [NSStringClass string];
难道你忘了#import
的Foo
的定义是什么?
+0
hm,应该是我定义了类方法,但是没有将它包含在'.h'中......所以现在它似乎工作。 –
你是什么意思“它不工作”?编辑:另外,'Class'和'id'是不兼容的类型,我不认为(可能要看那部分) –
@CarlVeazey Class和id确实兼容,它是Obj-C的一个定义特征:类是对象。例如,你可以有一个类的NSArray;你可以使用-respondsToSelector:查看一个类对象响应给定的类方法;你可以覆盖类方法。 – Darren
没关系,它们是兼容的类型,我的错误。 –