如果您尝试混合使用类和协议,在 Objective-C 中意味着什么?如果类不符合协议,我试图让编译器在编译器时警告我。例如:
@protocol FLLiveDataProtocol <NSObject>
...
@end
- (id)initWithDataPath:(NSString *)path usingDataClassFactory:(Class<FLLiveDataProtocol>)dataFactoryClass;
但是,当我尝试这个时,我会遇到各种有趣的问题。首先,如果您传入一个不符合协议的类,它不会触发编译器错误,其次,如果您尝试执行 [[dataFactoryClass] alloc] init] 甚至通过协议符合 NSObject。
我还没有看到很多人试图混合协议和 Class 关键字的例子(我应该说 Typedef——感谢 Nikolai)。
我知道我可以使用 conformsToProtocol 在运行时进行检查,但如果我能在编译时检查它会很好。