2012-04-19 4 views
0

아래 코드를 수행하려는 클래스 메서드가 있습니다. 문제는 클래스 메소드에서 self.view와 같은 것을 사용할 수 없다는 것입니다. 그래서 나는 여기에 조금 붙어있다. [자습서] 사용에 대한 몇 가지 정보를 찾았지만 코드 조각에서이를 사용하는 방법을 실제로 이해하지 못합니다. 더 많은 정보클래스 메서드에서 자체 사용

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 { 
      // 
     } 
    } 

UPDATE는 내가 Circle 클래스가 있습니다. 그 클래스의 는 내가 indexNumber (정적 변수)을 수행 할 내 NUMViewController 클래스의 방법을 원하는 일정 금액에 도달 한이 방법

- (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]; 

    } 

} 

에게 있습니다. I.E. "gameHasEnded"메소드.

이 게시물의 시작 부분에 코드가있는 메소드가됩니다. 보기에서 다른 모든 원 인스턴스를 제거합니다.

클래스 메서드는 원 객체에서 메서드를 수행하지 않기 때문에 가장 논리적 인 것처럼 보였지만 다른 클래스의 모든 객체에 영향을줍니다.

답변

3

self.view을 호출하는 클래스 메서드를 사용하는 것은 의미가 없습니다. 수업에는 view이 없으므로 어떤 의미인지 알 수있는 방법이 없습니다. 왜 수업 방법에서 이러는거야? 인스턴스로 이동하십시오. 공유 싱글 톤 인스턴스가있는 경우 클래스 메소드가이를 참조 할 수 있지만 일반적으로 좋지 않으므로 (가능한 경우 클래스를 싱글 톤에 연결하므로) 피하는 것이 좋습니다.

+0

네, 이해합니다. 내 의도에 대한 정보를 더 추가했습니다. 하지만 인스턴스 메서드로 어떻게해야하는지 잘 모르겠습니다. 알 수없는 선택기 오류가 계속 발생합니다. –

+0

'indexNumber'를 아마도 게임과 같은 모델 클래스 (아마도 싱글 톤 객체)로 옮겨야합니다. 인덱스가 0이되면 'Game'은'GameEndedNotification'과 같은 알림을 게시합니다. 뷰 컨트롤러는이를 관찰하고 뷰를 제거합니다. 여기서 핵심은 Model, View 및 Controller 클래스를 분리하는 것입니다. 그러나 클래스 메소드 나 정적 변수에는 여기에 이유가 없습니다. –

+0

감사합니다. 나는 이것을 시도 할 것이다. 이 전체 MVC 일은 나에게 제대로 이해하기에는 아직 다소 모호합니다. –

관련 문제