0

以下のコードを実行したいクラスメソッドがあります。問題は、クラスメソッドでは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 {
            //
        }
    }

詳細を更新

サークルクラスがあります。そのクラスで私はこのメソッドを持っています

- (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クラスのメソッドを実行する必要があります。IEの「gameHasEnded」メソッド。

これは、この投稿の冒頭にあるコードを使用したメソッドになります。ビューから他のすべての円インスタンスを削除します。

クラスメソッドは、サークルオブジェクトに対してメソッドを実行していないため、私にとって最も論理的であるように見えましたが、他のクラスのすべてのオブジェクトに影響します。

4

1 に答える 1

3

を呼び出すクラスメソッドがあることは意味がありませんself.view。クラスにはview、がなく、どのインスタンスを意味するのかを知る方法はありません。なぜこれをクラスメソッドで行うのですか?インスタンスに移動します。共有シングルトンインスタンスがある場合、クラスメソッドがそれを参照できますが、これは一般的に悪い考えであり、可能であれば避ける必要があります(クラスをシングルトンに結び付けるため)。

于 2012-04-19T15:55:41.177 に答える