我想创建一个接受UIButton,UIImageView或任何其他对象作为参数的方法。我使用id类型
尝试了以下内容-(void)shiftObject:(id)object {
object.frame = CGRectMake(0, 0, 20, 20);
}
但xcode静态错误检查器立即标记了它。有没有办法可以做到这一点?我认为我使用id类型在正确的轨道上,但我不确定从哪里开始。
答案 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:...];
您应该检查您的对象之前是否具有正确的类型,或者它是否响应您要发送的选择器。