在Objective-C中,我们可以使用泛型或基类引用来调用不同的类方法吗?

在Objective-C中,我们可以使用泛型或基类引用来调用不同的类方法吗?,objective-c,Objective C,在Objective-C中,我们可以有一个类Foo和一个类Bar,然后执行类似的操作吗 Class aClass = [Foo class]; [aClass getURLString]; 其中getURLString是Foo或Bar类的类方法。换句话说,根据类调用不同的类方法,这个类由一个变量引用 在本例中,Foo和Bar具有相同的NSObject基类。我试着使用上面的代码,但它不起作用。如果我使用 id aClass = Foo; 或 这也行不通。我必须实例化一个虚拟对象吗?Object

在Objective-C中,我们可以有一个类Foo和一个类Bar,然后执行类似的操作吗

Class aClass = [Foo class];
[aClass getURLString];
其中
getURLString
是Foo或Bar类的类方法。换句话说,根据类调用不同的类方法,这个类由一个变量引用

在本例中,Foo和Bar具有相同的NSObject基类。我试着使用上面的代码,但它不起作用。如果我使用

id aClass = Foo;


这也行不通。我必须实例化一个虚拟对象吗?Objective-C不需要实例化就可以完成吗?

您正在尝试的应该可以正常工作。例如,以下工作:

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

您是否可能忽略了导入
Foo
的定义?

您所说的“它不起作用”是什么意思?编辑:另外,
Class
id
是不兼容的类型,我认为(可能需要查找该部分)@carlvaezey Class和id确实是兼容的,这是Obj-C的一个定义特征:类是对象。例如,你可以有一系列的课程;您可以使用-respondsToSelector:查看类对象对给定类方法的响应;你可以重写类方法。不管怎样,它们是兼容的类型,我错了。@Darren你是对的,我只是盲目地看着它们被定义为指向的
struct
类型。。。但是它看起来像是因为
objc_对象
objc_类
都是从
isa
指针开始的,这就是它们在运行时得到相同对待的方式,我说的对吗?可能超出了评论的范围。但是谢谢你的更正,顺便说一句,很好的解释。嗯,应该是我定义了类方法,但没有在
.h
中包含它。。。因此,它现在似乎起作用了。
Class NSStringClass = [NSString class];
NSString *string = [NSStringClass string];