diff --git a/Classes/Features/Annotation/NSObject+annotation.h b/Classes/Features/Annotation/NSObject+annotation.h index b97e666..f907593 100644 --- a/Classes/Features/Annotation/NSObject+annotation.h +++ b/Classes/Features/Annotation/NSObject+annotation.h @@ -8,18 +8,30 @@ #import -//#define ppx_valid(__KEY__)\ -//({\ -//if (NO) {\ -//[([self.class new]) __KEY__];\ -//}\ -//}) +#define pp_property(object, property) (^{ \ +_Pragma("clang diagnostic push") \ +_Pragma("clang diagnostic ignored \"-Wunreachable-code\"") \ +_Pragma("clang diagnostic ignored \"-Wimplicit-retain-self\"") \ +return ((void)(NO && ((void)object.property, NO)), @#property); \ +_Pragma("clang diagnostic pop") \ +}()) + + +#define pp_class_property(class, property) (^{ \ +_Pragma("clang diagnostic push") \ +_Pragma("clang diagnostic ignored \"-Wunreachable-code\"") \ +_Pragma("clang diagnostic ignored \"-Wimplicit-retain-self\"") \ +return ((void)(NO && ((void)[[class new] property], NO)), @#property); \ +_Pragma("clang diagnostic pop") \ +}()) + //propert annotion define #define ppx(n, ...) \ + (NSArray *)annotion_support_##n\ {\ +pp_class_property(self, n);\ return @[__VA_ARGS__];\ } diff --git a/Hodor/NSObjectAnnotationTestVC.h b/Hodor/NSObjectAnnotationTestVC.h index b9a73bf..9c974c7 100644 --- a/Hodor/NSObjectAnnotationTestVC.h +++ b/Hodor/NSObjectAnnotationTestVC.h @@ -15,8 +15,11 @@ @interface AnnotationTestObj : NSNumber @property (nonatomic) NSString *str; +@property (nonatomic) NSString *str2; @property (nonatomic) id ID; +@property (nonatomic) id ID2; @property (nonatomic) char c; +@property (nonatomic) char c2; @property (nonatomic) int *p; @property (nonatomic) BOOL b; diff --git a/Hodor/NSObjectAnnotationTestVC.m b/Hodor/NSObjectAnnotationTestVC.m index a19c99a..eb04c2c 100644 --- a/Hodor/NSObjectAnnotationTestVC.m +++ b/Hodor/NSObjectAnnotationTestVC.m @@ -74,12 +74,18 @@ - (void)func1 } +//ppx(func2_withb_, @{@"j":@"k"}) + fpx(func2_withb_, @{@"j":@"k"}) - (void)func2:(int)a withb:(NSString *)b; { } +ppx(str2, @(5)) +ppx(ID2, @(5)) +ppx(c2, @(5)) +//ppx(sttr, @(5)) // error fpx(func3, @(5)) + (void)func3 { @@ -96,7 +102,6 @@ - (void)func4 @implementation AnnotationTestObj2 ppx(str2, @"t"); - ppx(func5, @"s"); - (void)func5 {