我想知道是否可以制作一个可以接收不同类型对象的动作。例如,如果我想将UILabels和UIButtons传递给同一个动作,但当时只有一个动作。我不想要的是这样的:
- (void)actionInitWithButton:(UIButton *)button Label:(UILabel *)label;
更像这样:
- (void)actionInitWithObject:(UniversalObject *)object;
提前致谢:)
答案 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;
...
}
}