Skip to content

Instantly share code, notes, and snippets.

@advantis
Created May 15, 2013 09:40
Show Gist options
  • Save advantis/5582796 to your computer and use it in GitHub Desktop.
Save advantis/5582796 to your computer and use it in GitHub Desktop.
Useless HOM sample
//
// Copyright © 2012 Yuri Kotov
//
#import <Foundation/Foundation.h>
@interface ADVSafeProxy : NSProxy
- (id) initWithObject:(id)object;
@end
//
// Copyright © 2012 Yuri Kotov
//
#import "ADVSafeProxy.h"
@implementation ADVSafeProxy
{
id _object;
}
- (id) initWithObject:(id)object
{
_object = object;
return self;
}
- (id) forwardingTargetForSelector:(SEL)selector
{
return [_object respondsToSelector:selector] ? _object : nil;
}
- (NSMethodSignature *) methodSignatureForSelector:(SEL)aSelector
{
return [NSMethodSignature signatureWithObjCTypes:"v@:"];
}
- (void) forwardInvocation:(NSInvocation *)invocation
{
// Do nothing
}
@end
//
// Copyright © 2012 Yuri Kotov
//
#import <Foundation/Foundation.h>
@interface NSObject (ADVMessaging)
- (id) ifResponds;
@end
//
// Copyright © 2012 Yuri Kotov
//
#import "NSObject+ADVMessaging.h"
#import "ADVSafeProxy.h"
@implementation NSObject (ADVMessaging)
- (id) ifResponds
{
return [[ADVSafeProxy alloc] initWithObject:self];
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment