2014-02-08 5 views
1

클래스 A (NSDocument 서브 클래스)에 내 문서 데이터가 저장되어 있습니다. 클래스 A는 뷰를 관리하는 클래스 B (NSView 서브 클래스)의 인스턴스를 생성합니다. 클래스 B의 drawRect : 메서드가 호출 될 때마다 클래스 A에서 updateChangeCount :를 호출하여 사용자가 문서를 저장하도록 알 수 있도록합니다.인스턴스 작성자가 수신자 인 메소드 호출

+2

DrawRect는 상태를 변경하지 않아야합니다. 이제까지. –

+0

죄송 합니다만, 아주 새로운 소식입니다. 이유를 설명해 주시겠습니까? – PopKernel

+0

-drawRect : 크기 조정, 인쇄, 스크린 샷 등 여러 가지 이유로 호출 될 수 있으므로 그리기 만 처리하면됩니다. –

답변

1

저는 OSX 프로젝트에 완전히 익숙하지 않고 drawRect:NSView에 대해 정확히 무엇을하는지 알고 싶습니다. Richard J Ross III의 댓글을 볼 수 있습니다. 그러나 그것을 인스턴스 객체의 메소드 호출 한 개체의 일반적인 문제에 :를 ClassA에서,

- (void)someClassBMethodThatNeedsToTriggerSomeClassAMethod { 
    // stuff 
    [self.delegate someRequiredMethod]; 

    if ([self.delegate respondsToSelector:@selector(someOptionalMethod)]) { 
     [self.delegate someOptionalMethod]; 
    } 
    // stuff 
} 

이제

ClassB.h

@protocol ClassBDelegate <NSObject> 
@reqiured 
- (void)someRequiredMethod; 
@optional 
- (void)someOptionalMethod; 
@end 

@interface ClassB <NSView> 
@property (nonatomic, assign) id<ClassBDelegate> delegate; 
// Other stuff you need in your interface 
@end 

ClassB.m을 이 프로토콜을 준수하는지 확인하십시오.

#import ClassB.h 

@interface ClassA <ClassBDelegate> 
,

그리고 필요한 방법을 구현 :

- (void)someRequiredMethod { 
    // stuff 
    NSLog(@"Hello world!"); 
    // stuff 
} 

을 그리고 당신은 당신의 ClassB 개체를 인스턴스화 할 때, 자신의 대리자를 설정해야합니다 :

classB.delegate = self; 

이 편집 : 참고, 나는에 넣어 ClassB이 필수 방법뿐만 아니라 선택적 방법을 사용할 수있는 방법의 예.

관련 문제