标签:str nsdate dex har void 删除 time add eth
#import <Foundation/Foundation.h>
@interface SFAutoDictionary : NSObject
@property (nonatomic, strong)NSString *string;
@property (nonatomic, strong)NSNumber *number;
@property (nonatomic, strong)NSDate *date;
@property (nonatomic, strong)id opaqueObject;
@end
#import "SFAutoDictionary.h"
#import <objc/runtime.h>
@interface SFAutoDictionary ()
@property (nonatomic, strong)NSMutableDictionary *backingStore;
@end
@implementation SFAutoDictionary
id autoDictionaryGetter(id self, SEL _cmd) {
SFAutoDictionary *dictSelf = (SFAutoDictionary *)self;
NSMutableDictionary *backingStore = dictSelf.backingStore;
NSString *key = NSStringFromSelector(_cmd);
return [backingStore objectForKey:key];
}
void autoDictionarySetter(id self, SEL _cmd, id value) {
SFAutoDictionary *dictSelf = (SFAutoDictionary *)self;
NSMutableDictionary *backingStore = dictSelf.backingStore;
NSString *selectorString = NSStringFromSelector(_cmd);
NSMutableString *key = [selectorString mutableCopy];
//删除:
[key deleteCharactersInRange:NSMakeRange(key.length-1, 1)];
//删除set
[key deleteCharactersInRange:NSMakeRange(0, 3)];
//小写
NSString *lowercaseFirstChar = [[key substringToIndex:1] lowercaseString];
[key replaceCharactersInRange:NSMakeRange(0, 1) withString:lowercaseFirstChar];
if (value) {
[backingStore setObject:value forKey:key];
}else{
[backingStore removeObjectForKey:key];
}
}
- (instancetype)init {
if (self = [super init]) {
_backingStore = [[NSMutableDictionary alloc] init];
}
return self;
}
+ (BOOL)resolveClassMethod:(SEL)sel {
NSString *selectorString = NSStringFromSelector(sel);
if ([selectorString hasPrefix:@"set"]) {
class_addMethod(self, sel, (IMP)autoDictionarySetter, "v@:@");
}else{
class_addMethod(self, sel, (IMP)autoDictionaryGetter, "@@:");
}
return YES;
}
@end
标签:str nsdate dex har void 删除 time add eth
原文地址:http://www.cnblogs.com/gkp307/p/7663416.html