【问题标题】:__has_include analog for methods in Objective C__has_include 模拟 Objective C 中的方法
【发布时间】:2023-02-20 20:26:20
【问题描述】:

Objective C 中是否有任何用于方法的模拟预处理器命令? 假设我在框架中有一个类MyClass。我如何检查 MyClass.SOME_METHOD 是否存在该框架,如果存在 - 运行它。 问题是,当我想通过以下方式检查时:

[obj respondsToSelector:@selector(SOME_METHOD:)]

如果方法不存在 - 编译器不编译。 我可以检查它类似于

#if __has_include(<MyFramework/MyFramework.h>)

但不是一个类来检查那里是否存在方法?

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    @selector() 指令确实需要一个现有的方法,但它不是创建选择器的唯一方法。

    您可以使用 NSSelectorFromString 从字符串(常量或变量)创建选择器。编译时不会检查此字符串的值。

    使用此方法的缺点是,如果您输入错误或选择器名称不匹配,它不会通知您。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-30
      • 2011-10-14
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多