FTGPropertyMaestro 1.0

FTGPropertyMaestro 1.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

Khoa Pham 维护。



为类别生成属性

我是如何做的

  • 交换 getter 和 setter
  • 使用关联对象

如何使用它

  • 导入 FTGPropertyMaestro 并开始使用
  • 不支持具有或未具有对象类型的备份实例变量的属性
@property (nonatomic, assign) BOOL categoryBoolProperty;

此属性不受支持,因为它是 BOOL 类型

@interface FTGClassA : NSObject

@property (nonatomic, strong) NSNumber *strongProperty;

@end

此属性不受支持,因为它不在类别中,它将被自动合成以具有 getter、setter 和备份实例变量。

  • 支持自定义 getter 和 setter
@property (nonatomic, copy, setter = updateCategoryCopyProperty:) NSString *categoryCopyProperty;
  • 根据您的属性属性设置关联类型
@property (nonatomic, strong) NSNumber *categoryStrongProperty;

这将选择 OBJC_ASSOCIATION_RETAIN_NONATOMIC

  • 请记住使用 @dynamic 来抑制警告
  • FTGPropertyMaestro 将为您生成 getter 和 setter,使用关联对象(如果已有实现则替换,如果不存在则添加新实现)

属性检索

NSArray *kClassAProperties = [FTGPropertyMaestro propertiesForClass:[FTGClassA class]];
FTGProperty *wheelNumberProperty = [FTGPropertyMaestro propertyForClass:[FTGCar class]
                                        propertyName:@"wheelNumber"];
                                                                ```

Synthesize property for category
--

`FTGClassA+FTGAdditions.h`

@interface FTGClassA (FTGAdditions)

@property (nonatomic, assign, getter = fetchCategoryBoolProperty) BOOL categoryBoolProperty; @property (nonatomic, strong) NSNumber *categoryStrongProperty; @property (nonatomic, copy, setter = updateCategoryCopyProperty :) NSString *categoryCopyProperty;

@end


`FTGClassA+FTGAdditions.m`

@implementation FTGClassA (FTGAdditions)

@dynamic categoryBoolProperty; @dynamic categoryCopyProperty; @dynamic categoryStrongProperty;

  • (void)load { [FTGPropertyMaestro synthesizeClass:self propertyNames:@[ @"categoryCopyProperty", @"categoryStrongProperty"] ]; }

@end



Testing
--
Use XCTest

License
--
This project is released under the MIT license. See LICENSE.md