是否可以通过对象id工作

时间:2014-01-17 17:07:27

标签: ios objective-c

我有两个相同的功能。它们的唯一区别 - 首先传输UITextField,第二个传输UILabel。

-(void)shakeAnimationField:(UITextField*) textField;
-(void)shakeAnimationLabel:(UILabel*) textField;

我可以转移ID与他一起工作吗? 像-(void)shakeAnimationLabel:(id) textField;一样 我试过了,但刚收到错误

  

在'const __strong id'

类型的对象上找不到属性'transform'

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

Dot语法不适用于id。点语法要求将对象强类型化为类。

所以,而不是:

textField.transform = ...;

执行:

[textField setTransform:...];

答案 1 :(得分:1)

您可以使用:

- (void)shakeAnimationForView:(UIView *)view

因为这两个类都是UIView的子类,它定义了你想要使用的接口。

答案 2 :(得分:1)

在像你这样的情况下,我会做这样的事情:

方法声明:

-(void)shakeAnimationObject:(id) myObject;

方法定义:

-(void)shakeAnimationObject:(id) myObject
{
   if ([myObject isKindOfClass:[UITextField class]])
   {
    //My Custom Code for UITextField
   }

   else if ([myObject isKindOfClass:[UILabel class]])
   {
    //My Custom code for UILabel
   }

   else{
   //What if it is something else???
   }
}