在Objective-C中是否有测试#导入文件的通用方法
我正在研究核心数据功能的扩展。我有一个代码块,我想测试用户的在Objective-C中是否有测试#导入文件的通用方法,objective-c,import,c-preprocessor,Objective C,Import,C Preprocessor,我正在研究核心数据功能的扩展。我有一个代码块,我想测试用户的nsapplicationelegate是否实现了模板化的managedObjectContext访问器。但我不希望需要AppKit框架或NSApplication(我可能会在命令行应用程序中使用该功能),因此我希望将该块包装在#ifdef中 查看NSApplication.h,NSAppKit版本有#defines(例如NSAppKitVersionNumber10\u 0)。我可以测试其中任意一个,但感觉不太对。在预处理器中是否有一
nsapplicationelegate
是否实现了模板化的managedObjectContext
访问器。但我不希望需要AppKit框架或NSApplication
(我可能会在命令行应用程序中使用该功能),因此我希望将该块包装在#ifdef
中
查看NSApplication.h,NSAppKit版本有
#define
s(例如NSAppKitVersionNumber10\u 0
)。我可以测试其中任意一个,但感觉不太对。在预处理器中是否有一种通用方法来测试当前编译环境是否包含框架或特定头?否,没有,因为:
BOOL delegateImplementsAccessor = [[[NSClassFromString(@"NSApplication") sharedApplication] delegate] respondsToSelector:@selector(managedObjectContext)];
你建议使用NSClassFromString效果很好,但我对你的第一个断言感到困惑<代码>#导入保证头文件的单一执行。必须以某种方式进行跟踪,即使只是测试是否存在预编译头。@Seamus:很可能预处理器维护一个包含文件的内部列表,但它不必提供该列表的接口。对。是否有一个接口,以该数据是几乎我所追求的。