gpt4 book ai didi

ios - 检测符合协议(protocol)的对象类?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:10 25 4
gpt4 key购买 nike

我有一系列符合特定协议(protocol)的类。例如:

@protocol Consumable
@end

还有几个类之一:

@interface LivingEntity : Entity<Consumable>
...

在应用程序的其他部分,我检查对象是否 conformsToProtocol,并使用以下方法转换它们:

id<Consumable> consumable = (id<Consumable>) something;

问题是 consumable 然后被移交给几个方法。如果 consumableLivingEntity 类的实例,其中之一需要额外的逻辑。

但是,无法检查是否 [consumable class] == [LivingEntity class]

如何查看它是哪个类?似乎协议(protocol)转换阻止我使用 NSObject 方法。

最佳答案

假设所有符合 Consumable 的类也符合 NSObject 协议(protocol),通常意味着它们都来自 NSObject NSProxyConsumable 扩展 NSObject,允许您使用 -isKindOfClass:-isMemberOfClass: 方法:

@protocol Consumable <NSObject>
...
@end

然后,如果您想检查 LivingEntity 或其任何子类,则可以使用 isKindOfClass: 进行检查,如果需要,则可以使用 isMemberOfClass:仅检查 LivingEntity,不包括其子类。例如:

if([consumable isKindOfClass:[LivingEntity class]]) {...}

关于ios - 检测符合协议(protocol)的对象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23961323/

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