Skip to content

Instantly share code, notes, and snippets.

@cdzombak
Created February 27, 2015 04:44
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cdzombak/375683efae61b68a159c to your computer and use it in GitHub Desktop.
Save cdzombak/375683efae61b68a159c to your computer and use it in GitHub Desktop.
simple ObjC lazy getter macro
#import <Foundation/Foundation.h>
#define lazy_get(TYPE, NAME, VALUE) \
@synthesize NAME = _##NAME; \
- (TYPE)NAME { if (!_##NAME) _##NAME = (VALUE); return _##NAME; }
// example usage follows:
@interface LazyThing : NSObject
@property (nonatomic, readonly) NSString *lazyString;
@property (nonatomic, copy) NSString *aString;
@end
@implementation LazyThing
lazy_get(NSString *, lazyString, {
NSString *a = @"a";
NSString *b = @"b";
[a stringByAppendingString:b];
})
lazy_get(NSString *, aString, {
NSString *x = @"x";
[x stringByAppendingString:[@(1) stringValue]];
})
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment