gpt4 book ai didi

objective-c - 如何以类型安全的方式询问类?

转载 作者:行者123 更新时间:2023-12-03 17:07:46 26 4
gpt4 key购买 nike

假设我有一个接受类的方法,其调用方式如下:

[registry registerClass:[MyClass class]];

如何询问 -registerClass: 中的类?

-(void) registerClass:(Class)typeClass {

// Verify that instances of typeClass confirm to protocol / respondsToSelector

// ?

// Do stuff
// ...
[myListOfClasses addObject:typeClass];
// ...
}

这是“?”我很好奇。假设 foo 始终是 NSObject 的子类,我可以安全(并且始终)将 Class foo 转换为 NSObject *fooObj 并向其发送消息吗?是否存在所有 NSObject 元类都继承自的根元类?或者所有 Class 对象都只是单个元类的实例?

最佳答案

Class 类型也是一个对象,并且可以调用它的方法。 this Apple example 中的 list 5显示了可以在 Class 对象上调用的方法的一些示例。

具体来说,您可以在类对象上调用conformsToProtocol:,例如:

[ typeClass conformsToProtocol: @protocol( MyProtocol ) ];

或者您可以使用instanceRespondToSelector:来查看此类的实例是否实现了选择器。

[ typeClass instancesRespondToSelector: @selector( MyNeatMethod ) ];

请注意,在 Class 对象上调用 respondsToSelector: 将测试该类实现的类方法,而不是该类的实例方法。

关于objective-c - 如何以类型安全的方式询问类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3251859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com