Delegates: Difference between revisions

No edit summary
Line 494:
<lang objc>#import <Cocoa/Cocoa.h>
 
@interface Delegator : NSObject {
 
{
id delegate;
}
 
- (id)delegate;
- (void)setDelegate:(id)obj;
- (NSString *)operation;
 
@end
 
@implementation Delegator
 
- (id)delegate; {
{
 
return delegate;
}
 
- (void)setDelegate:(id)obj; {
{
 
delegate = obj; // Weak reference
}
 
- (NSString *)operation; {
{
 
if ([delegate respondsToSelector:@selector(thing)])
return [delegate thing];
 
return @"default implementation";
}
 
@end
 
// Any object may implement these
@interface NSObject (DelegatorDelegating)
 
- (NSString *)thing;
 
@end
 
@interface Delegate : NSObject
 
// Don't need to declare -thing because any NSObject has this method
 
@end
 
@implementation Delegate
 
- (NSString *)thing; {
{
 
return @"delegate implementation";
}
 
@end
 
// Example usage
// Memory management ignored for simplification
int main() {
 
{
// Without a delegate:
Delegator *a = [[Delegator alloc] init];
Anonymous user