-1

如果可以做出可以接收不同类型对象的动作,我会感到很痛苦。例如,如果我想将 UILabels 和 UIButtons 传递给同一个动作,但一次只有一个。我不想要的是这样的:

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

更多类似的东西:

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

提前致谢 :)

4

1 回答 1

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;
        ...
    }
 }
于 2012-12-13T03:48:49.613 回答