diff --git a/GVUserDefaults/GVUserDefaults.h b/GVUserDefaults/GVUserDefaults.h index e746095..8ae4ab0 100644 --- a/GVUserDefaults/GVUserDefaults.h +++ b/GVUserDefaults/GVUserDefaults.h @@ -11,5 +11,7 @@ @interface GVUserDefaults : NSObject + (instancetype)standardUserDefaults; ++ (BOOL)ignoreSynthesizedProperties; ++ (NSArray *)ignoredKeys; @end diff --git a/GVUserDefaults/GVUserDefaults.m b/GVUserDefaults/GVUserDefaults.m index 6454ae0..a800858 100644 --- a/GVUserDefaults/GVUserDefaults.m +++ b/GVUserDefaults/GVUserDefaults.m @@ -133,6 +133,14 @@ + (instancetype)standardUserDefaults { return sharedInstance; } ++ (BOOL)ignoreSynthesizedProperties { + return NO; +} + ++ (NSArray *)ignoredKeys { + return nil; +} + #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wundeclared-selector" #pragma GCC diagnostic ignored "-Warc-performSelector-leaks" @@ -192,6 +200,11 @@ - (void)generateAccessorMethods { const char *name = property_getName(property); const char *attributes = property_getAttributes(property); + if ((void *)(strstr(attributes, ",D")-attributes) == NULL + || ([self.class ignoredKeys] != nil + && [[self.class ignoredKeys] containsObject:[[NSString alloc] initWithUTF8String:name]])) { + continue; + } char *getter = strstr(attributes, ",G"); if (getter) { getter = strdup(getter + 2);