如果可以做出可以接收不同类型对象的动作,我会感到很痛苦。例如,如果我想将 UILabels 和 UIButtons 传递给同一个动作,但一次只有一个。我不想要的是这样的:
- (void)actionInitWithButton:(UIButton *)button Label:(UILabel *)label;
更多类似的东西:
- (void)actionInitWithObject:(UniversalObject *)object;
提前致谢 :)
如果可以做出可以接收不同类型对象的动作,我会感到很痛苦。例如,如果我想将 UILabels 和 UIButtons 传递给同一个动作,但一次只有一个。我不想要的是这样的:
- (void)actionInitWithButton:(UIButton *)button Label:(UILabel *)label;
更多类似的东西:
- (void)actionInitWithObject:(UniversalObject *)object;
提前致谢 :)
在 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;
...
}
}