我有一个A类,(NSDocument子类),它存储我的文档数据。 A类创建了一个管理视图的B类实例(NSView子类)。我想要它,以便每次调用类B的drawRect:方法时,它调用类A上的updateChangeCount:以便用户知道保存文档。
答案 0 :(得分:1)
我并不完全熟悉OSX项目以及drawRect:
对NSView
的确切了解,所以您可能需要查看Richard J Ross III的评论。但是关于一个对象调用实例化对象的方法的一般问题:
<强> 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 强>
- (void)someClassBMethodThatNeedsToTriggerSomeClassAMethod {
// stuff
[self.delegate someRequiredMethod];
if ([self.delegate respondsToSelector:@selector(someOptionalMethod)]) {
[self.delegate someOptionalMethod];
}
// stuff
}
现在,在ClassA中,请确保遵守此协议:
#import ClassB.h
@interface ClassA <ClassBDelegate>
并实施所需的方法:
- (void)someRequiredMethod {
// stuff
NSLog(@"Hello world!");
// stuff
}
当您实例化ClassB
对象时,请务必将其委托设置为自己:
classB.delegate = self;
编辑:注意,我举了一个例子,说明ClassB
如何使用可选方法以及所需的方法。