目标C类型的类指针

时间:2018-07-08 14:28:51

标签: objective-c objective-c++

因此,我们在Objective C中确实有一个很好的“类”类型,它允许我们引用类,但是可以添加这样的类型:

Class<NSObject> test1 = [NSObject class];
test1 = [NSString class]; // OK, since NSString is a child of NSObject
Class<NSString> test2 = [NSMutableString class]; // also OK
test2 = [NSObject class]; // Badabumm, this should make the compiler complain 

我确实知道Class不接受泛型,但是这种行为是否可能,我考虑了以下选项:

  1. 通常,NSObject实例的类型为NSObject *,如果我们要引用NSObject的类,是否可以使用这样的元类名称:NSObject_metaclass *?
  2. 使用泛型重新实现“类”,但是据我了解,这仅允许运行时检查
  3. 有些骇人听闻的方式吗?
  4. 运行时检查它,但是我不太喜欢这个主意,我希望编译器将类型不匹配通知我。

在此先感谢您和我的英语, 劫机者

1 个答案:

答案 0 :(得分:0)

Objective-C实际上没有任何方法可以做到这一点。您可能需要研究Swift,它在编译时类型安全性方面比Objective-C严格得多,并且与Apple平台上现有的Objective-C代码兼容。