快速通过运行时关联向类别添加属性。属性的名称必须遵循三个字母前缀的命名约定(例如mys_property
),以保证其正常工作。
在Podfile中添加以下行:
pod "MYSCategoryProperties"
将属性添加到您的头文件
@interface NSString (Example)
@property (nonatomic, copy ) NSDate *mys_typedAt;
@property (nonatomic, assign) NSInteger mys_firstSpaceIndex;
@end
导入头文件
#import <MYSCategoryProperties.h>
在实现文件中为每个属性添加@dynamic
@implementation NSString (Example)
@dynamic mys_typedAt;
@dynamic mys_firstSpaceIndex;
...
在+ (void)load
方法中调用此方法(此方法称为每个类的类别)
+ (void)load
{
[MYSCategoryProperties generateGettersSettersForCategoryOnClass:self];
}
就是这样!
现在您可以像使用普通属性一样使用这些属性
NSString *string = @"A string";
string.mys_typedAt = [NSDate date];
string.mys_firstSpaceIndex = 1;
NSLog(@"A string: \"%@\" that was typed at %@ has a space at %d", string, string.mys_typedAt, string.mys_firstSpaceIndex);
请在提交拉取请求之前更新并运行测试。谢谢。
从https://github.com/gangverk/GVUserDefaults中获取了许多灵感和代码。