我有一个实现 UIPopOverControllerDelegate 的类:
#if ios_atleast_32
@interface MyClass : UIViewController <UIPopoverDelegate>
#elsif
@interface MyClass : UIViewController
#endif
是否可以在运行时确定该类是否可用并因此应用作委托(delegate)?进口也一样:
#if ios_4_available
#import "MyClassWhichIsUsingIos4Stuff.h"
#endif
最佳答案
您正在构建最新的 SDK,因此您可以随时 #import
新的东西,不需要任何预处理器宏。协议(protocol)也是如此。
只需确保在使用并非在所有受支持的操作系统版本上都可用的类之前检查该类是否存在,否则您的应用程序将崩溃:
Class someNewClass = NSClassFromString(@"SomeNewClass");
if (someNewClass) {
...
}
else {
...
}
在较新版本的 SDK 中(不要问我到底有什么要求),您还可以执行以下操作:
if ([SomeNewClass class]) {
...
}
else {
...
}
关于objective-c - 仅在可用时导入类(例如 UIPopOverControllerDelegate 仅在 >= 3.2 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7528818/