代码之家  ›  专栏  ›  技术社区  ›  refulgentis

如何得到目标C中方法的返回类型?

  •  3
  • refulgentis  · 技术社区  · 14 年前

    我正在iOS上编写一个通用的“属性/键编辑器”视图类,它使用 [objectForKey isKindOfClass:[NSDate class]] ,例如。当我意识到如果 objectForKey nil . 是否有方法获取泛型Objective-C属性的类/返回类型,即使该属性是 ? 我知道 method_getReturnType 在Objective-C运行时,但这听起来像是对我需要的东西的过度杀戮。

    4 回复  |  直到 5 年前
        1
  •  3
  •   Jens Ayton cdespinosa    14 年前

    你不能。虽然方法的返回类型信息是可用的,但是返回对象的方法的返回类型编码是 @ ,表示“对象引用”。

        2
  •  2
  •   Peter Hosey    14 年前

    你的要求没有道理。

    请记住,仅名称不能识别方法。对象对这些消息(或不)进行响应;一个方法不单独存在,仅作为对象(或类)的一部分。

    如果没有对象,就无法判断向对象发送消息时会返回什么。

    埃塔:你怎么能编辑某个东西的属性,却没有要编辑的对象来检查它的属性?你好像在别的地方有个虫子。

    我知道 method_getReturnType 在Objective-C运行时,但这听起来像是对我需要的东西的过度杀戮。

    有两种方法。如果您想支持非正式属性(不支持 @property 声明),这正是你所需要的。如果你只关心形式属性( @财产 ),使用 the property_getAttributes function .

        3
  •  0
  •   mjdth    14 年前

    你就不能先检查一下确认一下objectForKey!=nil,然后继续进行类检查?如果确定对象不等于零,则可以轻松地检查或安全退出而不发生任何故障。

        4
  •  0
  •   M. Ryan    14 年前

    我不知道您的数据来自何处,但您可能需要考虑用NSNull替换nil,这将允许您在技术上为空的对象上获得类似NSObject的属性

    但空支票更让人痛心。

    它从物体上飞出来!=零到

    (NSNull*)对象!=[NSNull空]