objective-c - 仅在可用时导入类(例如 UIPopOverControllerDelegate 仅在 >= 3.2 上)

标签 objective-c ios

我有一个实现 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/

相关文章:

ios - 将不同的对象(类型)保留为单个对象 - CoreData -(收藏夹示例)

objective-c - 在不同的类中设置 Bool

iphone - 在我的 iPhone 应用程序中调用 rss

ios - 如何在IOS中使用callkit获取上次通话的详细信息

iphone - 呈现 UIPopoverviewcontroller

iphone - Objective C - objectForKey 问题

iphone 如何使 uitableviewcell 附件披露指示器背景透明?

objective-c - Objective C 开始使用 + 代替 | 了吗?用于组合位?

ios - 我可以从崩溃日志中识别越狱手机吗?

ios - 加载 xib 时无法识别的选择器