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

如何确定NSSet中项目的类型

  •  2
  • ryanprayogo  · 技术社区  · 14 年前

    例如,方法:

    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
    

    UIResponder 有一个 NSSet* touches 作为参数。

    touches 真的包含吗?在本例中,它包含一组 UITouch . 但我从网上看了一些教程就知道了这一点。

    一般来说,如何知道集合包含什么类型的对象?

    3 回复  |  直到 14 年前
        1
  •  6
  •   bbum    14 年前

    正如阿兰所说,你可以使用 isKindOfClass: 确定NSSet中项目的类型。或者你可以要求任何一个给定的项目为它 -class 走那条路。

    在整个Cocoa中,很少看到基于某个项的类而改变行为的代码,因为该类不是软件设计过程的一部分。

    Iskindof类: 为了处理集合中的各种项目,它几乎总是一个体系结构问题的指示——几乎总是一个代码使用的模式不是次优的就是与Cocoa无关的。

        2
  •  0
  •   Aran Mulholland JohnnyAce    14 年前

    您可以询问集合中的对象是否为特定类型

    if ([objectInSet isKindOfClass:[MyClass class]]) {
        [(MyClass *)cell myClassMethod];
    }
    

    但是由于NSSet是NSObject的集合,它可能包含不同类型的对象(从NSObject派生),因此询问NSSet包含什么类型的对象是没有意义的,因为它总是告诉您NSObject。

        3
  •  0
  •   Community Jaime Torres    4 年前

    标签中“touch”这个词的使用是一个很大的线索,表明它是一个UITouch,但是如果你想清楚地知道一个方法做了什么,最明显的事情就是检查 documentation

    触摸

    一组UITouch实例,表示在由event表示的事件期间移动的触摸。