如何为setTag:
类型对象调用id
?
答案 0 :(得分:2)
此外,如果您不希望编译器抱怨并且您知道对象的类型,则可以将其强制转换。
[(UILabel *)objById setTag:5];
答案 1 :(得分:0)
id
不完全是一个类。它是一种泛型类型,在Objective C中用于任意对象。例如,采取任何对象的方法可能看起来像这样
-(void) doIt(id parameter);
因此,说您的对象类型id
不会添加任何信息。
但如果你绝对确定你的对象会回复setTag
,你可以这么做:[object setTag:123]
。
否则,只需查找对象类的文档。
答案 2 :(得分:0)
setTag
是属于UIView子类的方法。如果您确定有问题的对象确实是UIView子类,您可以正常调用该方法:[someIdInstance setTag:5];
根据您的问题,我认为您可能无法理解id
类型的重要性。类型为id
的对象实际上可能是指向任何类型对象的指针。您无法保证实际上可以为该对象定义setTag:
,这通常是处理id
指针的代码执行以下步骤的原因:
id foo = [self getSomePointer];
if([foo respondsToSelector:@selector(setTag:)]) {
[foo setTag:4];
}
代码在尝试调用之前检查对象是否 方法。
答案 3 :(得分:-1)
通常就像
object-type.tag = value;
喜欢
button.tag = 50;