首页 > 解决方案 > 在调用函数之前检查类目标成员资格

问题描述

我有一个UserAccountManager需要从两个目标访问的类,分别是主 iOS 应用程序和扩展。在初始化期间,此类将调用一个单独的框架,由于它依赖于 AppDelegate,因此只能从主 iOS 应用程序访问。不幸的是,这无法编译,因为该框架在扩展中不可用。

如何检查该框架的目标成员资格,并且仅在可用时才进行调用?

标签: objective-c

解决方案


您可以使用条件编译。

-DHAS_APP_DELEGATE(或者您想调用它)添加到具有 AppDelegate 的目标的“其他 C 标志”构建设置。

然后您可以有条件地编译您的 ObjC 代码。

#ifdef HAS_APP_DELEGATE
    // Call to framework that depends on AppDelegate
#else
    // Do something else instead
#endif

如果您只想跳过对框架的调用,可以忽略 else 分支。您也可以#ifdef在进行导入时使用,仅在可以使用时导入框架。

这是一个可能包含其他方法的问题:Conditional compilation check for framework before importing


推荐阅读