我有一个实现UIPopOverControllerDelegate的类:
#if ios_atleast_32
@interface MyClass : UIViewController <UIPopoverDelegate>
#elsif
@interface MyClass : UIViewController
#endif
是否可以在运行时确定类是否可用,因此应该用作委托?进口相同:
#if ios_4_available
#import "MyClassWhichIsUsingIos4Stuff.h"
#endif
答案 0 :(得分:4)
您正在构建最新的SDK,因此您始终可以#import
新的东西,并且不需要任何预处理器宏。该协议也是如此。
请确保在使用所有受支持的操作系统版本不可用的类之前,检查该类是否存在或您的应用程序是否会崩溃:
Class someNewClass = NSClassFromString(@"SomeNewClass");
if (someNewClass) {
...
}
else {
...
}
在较新版本的SDK中(不要问我究竟是什么要求)你也可以这样做:
if ([SomeNewClass class]) {
...
}
else {
...
}
答案 1 :(得分:2)
无论在运行时使用哪个iOS版本,您都可以简单地实现协议,并且它可以正常工作。
答案 2 :(得分:0)
正如上面提到的那样,导入类没有问题 - 但是UIKit必须是弱链接的...这是我案例中的缺失点!