setTag:在Objective-C中

时间:2011-02-08 05:07:10

标签: objective-c tags

如何为setTag:类型对象调用id

4 个答案:

答案 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;