在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可以不经实例化吗?

+1

你是什么意思“它不工作”?编辑:另外,'Class'和'id'是不兼容的类型,我不认为(可能要看那部分) –

+0

@CarlVeazey Class和id确实兼容,它是Obj-C的一个定义特征:类是对象。例如,你可以有一个类的NSArray;你可以使用-respondsToSelector:查看一个类对象响应给定的类方法;你可以覆盖类方法。 – Darren

+0

没关系,它们是兼容的类型,我的错误。 –

你正在尝试应该工作正常。例如,下面的工作:

Class NSStringClass = [NSString class]; 
NSString *string = [NSStringClass string]; 

难道你忘了#importFoo的定义是什么?

+0

hm,应该是我定义了类方法,但是没有将它包含在'.h'中......所以现在它似乎工作。 –