2012-03-27 4 views
1

값을 변경할 때 (값이 객체에 바인드 됨) 알림이 호출되도록 정수 변수에 리스너를 설정하도록 코드를 설정하는 방법은 무엇입니까? 감사합니다.변수 변경시 알림 만들기

답변

5

일반 C 변수의 변경을 감지 할 수 없습니다.

아마도 개체의 내부 상태가 변경되는 것을 관찰하고 싶을 것입니다. 그렇다면 정수 값을 속성으로 래핑하고 접근 자 메서드를 사용하여 값을 수정해야합니다.

@interface Foo : NSObject 
@property int bar; // declares a property of type int 
@end 

@implementation Foo 
@synthesize bar; // creates accessor methods for the property 
@end 

Key Value Observing을 사용하여 속성의 변경 사항을 감지 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. "정수 값을 속성으로 랩핑"한다는 것은 무엇을 의미합니까? 감사! – Kevin

+0

정수를 하나의 속성으로 감싸서 위에서 설명한대로 새 클래스를 만듭니다. 이제 문제는 KVO에 있습니다. 위에서 사용한 변수 bar가 다음과 같은 속성 인 클래스의 새 인스턴스를 만듭니다. tabViewIndex * tvi = [[tabViewIndex alloc] init]; \t \t [TVI addObserver : 자기 forKeyPath : @ "바" 옵션 : NSKeyValueObservingOptionNew 상황 : NULL]; – Kevin

+0

다음, 나는이 방법을 호출 오전 : - (무효) observeValueForKeyPath : (있는 NSString *) 키 패스 ofObject (ID) 개체 변화 : (NSDictionary와 *) 변경 컨텍스트 (무효 *) 컨텍스트 { \t NSLog을 (@ " 일"); } 변경 사항이있을 때 로그온을 시도합니다. 그러나이 메서드는 호출되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 감사! – Kevin