在课堂上用自己的方法

问题描述:

我有一个类的方法,我想在下面执行这段代码。问题是在类方法中,你不能使用像self.view这样的东西。所以我有点卡在这里。我发现了一些关于使用[self class]的东西,但我并不真正了解如何在我的代码中使用它。在课堂上用自己的方法

for (UIView *view in [self.view subviews]) 
    { 
     if([view isKindOfClass:[Circle class]]) { 

      [UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationCurveLinear animations:^{ 
       view.alpha = 0; 
       view.frame = CGRectMake(self.view.frame.size.width/2-35, self.view.frame.size.height/2-35, 70, 70); 
      } completion:nil]; 

      [view performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:0.4]; 
     } else { 
      // 
     } 
    } 

更新的详细信息

我有一个Circle类。 在I类有这个方法

- (IBAction)playerTap:(id)sender { 


    NSString *numberString; 
    numberString = [NSString stringWithFormat:@"%i",indexNumber+1]; 

    if (indexNumber < 14) 
    { 


    if ([label.text isEqualToString:numberString]) 
    { 
    [UIView animateWithDuration:0.1 animations:^{ 


     self.transform = CGAffineTransformMakeScale(1.2, 1.2); 

    } completion:^(BOOL finished) { 

     [UIView animateWithDuration:0.05 animations:^{ 
      self.transform = CGAffineTransformIdentity; 
      self.alpha = 0.2; 

     } completion:nil]; 

    }]; 

    ++indexNumber; 
    } 
    } else { 

     self.alpha = 0.2; 

     [NUMViewController gameHasEnded]; 

    } 

} 

当indexNumber(静态变量)已经达到了一定的我想在我NUMViewController类中的方法进行。 I.E. “gameHasEnded”方法。

这将是一个方法与本文开头的代码。它会从视图中移除所有其他的圆形实例。

类方法对我来说似乎是最合乎逻辑的,因为我没有在圆对象上执行该方法,但它会影响其他类中的所有对象。

有一个调用self.view的类方法是没有意义的。该班级没有view,也无法知道您的意思。你为什么用类方法做这件事?将其移至实例。如果你有一个共享的单例实例,比类方法可以引用它,但这通常是一个坏主意,如果可能的话应该避免(因为它将你的类连接到单例)。

+0

是的,我明白。我已经添加了一些关于我的意图的更多信息。但我不确定我应该如何使用实例方法来做到这一点。我不断收到无法识别的选择器错误。 – 2012-04-19 16:38:53

+0

你应该将'indexNumber'移​​动到一个模型类(可能是一个单例对象),可能类似于'Game'。当索引达到0时,“游戏”会发布像GameEndedNotification这样的通知。视图控制器会观察并清除它的视图。这里的关键是分离模型,视图和控制器类。但是这里没有理由使用类方法或静态变量。 – 2012-04-19 19:45:42

+0

好的谢谢。我会试试这个。这整个MVC的东西仍然有点模糊,我要正确把握。 – 2012-04-19 20:38:48