Skip to content

Instantly share code, notes, and snippets.

@kenn
Last active August 29, 2015 14:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kenn/11273433 to your computer and use it in GitHub Desktop.
Save kenn/11273433 to your computer and use it in GitHub Desktop.
#define CLASS_PROPERTY_INTERFACE(TYPE, METHOD, CMETHOD) \
+ (TYPE) METHOD; \
+ (void) set##CMETHOD:(TYPE)val; \
#define CLASS_PROPERTY_IMPLEMENTATION(TYPE, METHOD, CMETHOD) \
static TYPE _##METHOD; \
+ (TYPE) METHOD \
{ @synchronized(self) { return _##METHOD; } } \
+ (void) set##CMETHOD:(TYPE)val \
{ @synchronized(self) { _##METHOD = val; } } \
// Setter
User.me = currentUser;
// Getter
User.me
@interface User : NSObject
CLASS_PROPERTY_INTERFACE(User *, me, Me)
@end
@implementation User
CLASS_PROPERTY_IMPLEMENTATION(User *, me, Me)
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment