iOS:接受多个对象类型作为参数(是)对象?

时间:2011-09-13 08:19:33

标签: objective-c ios xcode object

我想创建一个接受UIButton,UIImageView或任何其他对象作为参数的方法。我使用id类型

尝试了以下内容
-(void)shiftObject:(id)object {
      object.frame = CGRectMake(0, 0, 20, 20);
}

但xcode静态错误检查器立即标记了它。有没有办法可以做到这一点?我认为我使用id类型在正确的轨道上,但我不确定从哪里开始。

2 个答案:

答案 0 :(得分:3)

你不能将它用于“任何其他对象”,只是“具有框架属性的任何其他对象”。

所以,尝试使用框架进行投射,例如UIView。您提到的所有对象都从UIView继承,因此具有frame属性。

-(void)shiftObject:(id)object {
      ((UIView*)object).frame = CGRectMake(0, 0, 20, 20);
}

答案 1 :(得分:2)

您可以将对象转换为正确的类型:

((UIButton*)object).frame = ...

或者您可以在没有点符号的情况下调用setter

[object setFrame:...];

您应该检查您的对象之前是否具有正确的类型,或者它是否响应您要发送的选择器。