| 测试已测试 | ✓ |
| 语言语言 | Objective C++Objective C++ |
| 许可证 | MIT |
| 发布最新发布 | 2015年10月 |
由Victor Pavlychko维护。Victor Pavlychko.
DynamicAssociatedProperties库使用objc_getAssociatedObject/objc_setAssociatedObject自动生成category中使用@dynamic声明的属性的访问器,用于后端存储。
支持的属性属性
支持的类型
charunsigned charshortunsigned shortintunsigned intlongunsigned longlong longunsigned long longfloatdoubleBOOLCGPointCGVectorCGSizeCGRectCGAffineTransformUIEdgeInsetsUIOffsetCATransform3D要在分类中添加属性,只需像往常一样在*.h文件中声明它们
@interface AWTestClass (AWTestCategory)
@property (copy) NSString *awStringProperty;
@property (weak) id awWeakProperty;
@property (assign) NSInteger awIntegerProperty;
@property (assign) CGRect awCGRectProperty;
@end并在*.m文件中定义为@dynamic。调用+[NSObject dynamicAssociatedPropertiesRegisterAll]将注册当前类的所有@dynamic属性。
#include <DynamicAssociatedProperties/DynamicAssociatedProperties>
@implementation AWTestClass (AWTestCategory)
@dynamic awStringProperty;
@dynamic awWeakProperty;
@dynamic awIntegerProperty;
@dynamic awCGRectProperty;
+ (void)load
{
[self dynamicAssociatedPropertiesRegisterAll];
}
@end自定义值类型可以轻松注册,但类型安全的解决方案将需要Objective-C++文件。只需将您的实现文件重命名为*.mm,并遵循此语法
#include <DynamicAssociatedProperties/AccessorBlockFactoryRegistry.h>
@implementation AWTestClass (AWTestCategory)
+ (void)load
{
AccessorBlockFactoryRegistry::instance().registerGetterAndSetterFactories<MyStructType>();
}
@end当添加缺失的SDK结构体时,请考虑扩展NSObject+DynamicAssociatedProperties.mm,并提交拉取请求 ;)
DynamicAssociatedProperties通过CocoaPods提供。要安装它,只需将以下行添加到Podfile中
pod "DynamicAssociatedProperties"要运行示例项目,克隆仓库,然后首先从Example目录中运行pod install。
有几个可选项目可用
维克多·巴夫利奇科,[email protected]
DynamicAssociatedProperties 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。