在Objective-C中,我们可以使用泛型或基类引用来调用不同的类方法吗?
在Objective-C中,我们可以有一个类Foo和一个类Bar,然后执行类似的操作吗在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
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];