是否可以创建一个可以接收不同类型参数的动作? (Xcode中)

时间:2012-12-13 03:45:39

标签: xcode object parameters universal

我想知道是否可以制作一个可以接收不同类型对象的动作。例如,如果我想将UILabels和UIButtons传递给同一个动作,但当时只有一个动作。我不想要的是这样的:

- (void)actionInitWithButton:(UIButton *)button Label:(UILabel *)label;

更像这样:

- (void)actionInitWithObject:(UniversalObject *)object;

提前致谢:)

1 个答案:

答案 0 :(得分:1)

在Objective-C中,它们简称为id。这是该语言的主要概念。

备选方案是NSObject,但这通常用于子类化 - id涵盖范围更广,因为并非所有(但大多数)对象都从NSObject继承。

实施例

- (void)actionInitWithObject:(id)something
{
    if([something isKindOfClass:[UIButton class])
    {
        UIButton *button = (UIButton *)something;
        ...
    } else if ([something isKindOfClass:[UILabel class]) {
        UILabel *label = (UILabel *)something;
        ...
    }
 }