2014-11-04 1 views
1

ResultDataClass의 속성 변수 (xxx)를 관찰하려고합니다. 내 작업에서 ViewController, 나는 다음과 썼습니다.KVO가 작동하지 않습니다 (다른 클래스의 속성 관찰)

-(void)dealloc {  
    ResultDataClass *resultData = [ResultDataClass getInstance]; 
    [resultData addObserver:self forKeyPath:@"xxx" options:NSKeyValueObservingOptionNew context:NULL]; 
} 

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 
    self.solutionText.text = @"test1"; 

    if([keyPath isEqualToString:@"xxx"]) { 
     self.solutionText.text = @"test2"; 
    } 

} 

solutionText 내이 ViewController 작업에 UITextView입니다. 프로그램을 실행 한 후에는 텍스트 뷰에 아무 것도 표시되지 않았습니다.

누구든지 문제를 해결하는 방법을 알고 계십니까?

내 영어를 사용해 주셔서 감사합니다.

+1

왜 설정하는 일을 내 self''에'dealloc'? – trojanfoe

답변

1

당신은 dealloc 방법으로 관찰자를 작성했습니다. 관찰자를 추가 할 때 개체가 해제되므로 KVO 값이 변경되면 충돌이 발생하는 문제가 있습니다.

충돌이없고 아무 것도 작동하지 않습니다. 이유는 다음과 같습니다. dealloc 메서드는 호출되지 않습니다. 이는 뷰 컨트롤러가 절대로 출시되지 않음을 의미합니다 (잠재적으로 누수가 발생하여 강력한 유지주기가 있음). 그 대신 당신의 viewDidLoad에 그 추가의

:

- (void)viewDidLoad 
{  
    [super viewDidLoad]; 
    ResultDataClass *resultData = [ResultDataClass getInstance]; 
    [resultData addObserver:self forKeyPath:@"xxx" options:NSKeyValueObservingOptionNew context:NULL]; 
} 
+0

정말 고마워요. 이전에 viewDidLoad 메서드로 작성했지만 아무 것도 표시되지 않았습니다. – user

+0

@user :'[ResultDataClass getInstance];'싱글 톤 인스턴스를 반환하겠습니까? –

+0

예. ResultDataClass를 사용하여 다른 클래스의 모든 데이터를 수집합니다. – user

관련 문제