gpt4 book ai didi

Objective-C 类关键字和协议(protocol)

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:12 25 4
gpt4 key购买 nike

如果您尝试混合类和协议(protocol),在 Objective-C 中意味着什么?如果一个类不符合协议(protocol),我试图让编译器在编译时警告我。例如:

@protocol FLLiveDataProtocol <NSObject>
...
@end

- (id)initWithDataPath:(NSString *)path usingDataClassFactory:(Class<FLLiveDataProtocol>)dataFactoryClass;

但是,当我尝试这个时,我遇到了各种有趣的问题。首先,如果你传入一个不符合协议(protocol)的类,它不会触发编译器错误,其次,如果你尝试执行 [[dataFactoryClass] alloc] init] 甚至通过协议(protocol)符合 NSObject。

我还没有看到很多人试图混合协议(protocol)和 Class 关键字的例子(我应该说 Typedef —— 谢谢 Nikolai)。

我知道我可以使用 conformsToProtocol 在运行时进行检查,但如果我能在编译时进行检查就更好了。

最佳答案

在 Objective-C ( see this question ) 中没有类对象的静态类型信息,因此无法表达类符合协议(protocol)的需要。

旁注:Class 不是关键字,而是 objc.h 中的 typedef:

typedef struct objc_class *Class;

关于Objective-C 类关键字和协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18579949/

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