#import "PSKeyValueCoder.h" #import pthread_rwlock_t classNameCacheLock = PTHREAD_RWLOCK_INITIALIZER; NSMutableDictionary *classNameCache() { static NSMutableDictionary *dict = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^ { dict = [[NSMutableDictionary alloc] init]; }); return dict; } @implementation PSKeyValueCoder + (Class)classForName:(NSString *)name { if (name == nil) return nil; Class result = nil; pthread_rwlock_rdlock(&classNameCacheLock); result = [classNameCache() objectForKey:name]; pthread_rwlock_unlock(&classNameCacheLock); if (result == nil) { result = NSClassFromString(name); if (result != nil) { pthread_rwlock_wrlock(&classNameCacheLock); classNameCache()[name] = result; pthread_rwlock_unlock(&classNameCacheLock); } } return result; } - (void)encodeString:(NSString *)__unused string forKey:(NSString *)__unused key { } - (void)encodeInt32:(int32_t)__unused number forKey:(NSString *)__unused key { } - (void)encodeInt64:(int64_t)__unused number forKey:(NSString *)__unused key { } - (void)encodeObject:(id)__unused object forKey:(NSString *)__unused key { } - (NSString *)decodeStringForKey:(NSString *)__unused key { return nil; } - (int32_t)decodeInt32ForKey:(NSString *)__unused key { return 0; } - (int64_t)decodeInt64ForKey:(NSString *)__unused key { return 0; } - (id)decodeObjectForKey:(NSString *)__unused key { return nil; } - (void)encodeString:(NSString *)__unused string forCKey:(const char *)__unused key { } - (void)encodeInt32:(int32_t)__unused number forCKey:(const char *)__unused key { } - (void)encodeInt64:(int64_t)__unused number forCKey:(const char *)__unused key { } - (void)encodeObject:(id)__unused object forCKey:(const char *)__unused key { } - (void)encodeArray:(NSArray *)__unused array forKey:(NSString *)__unused key { } - (void)encodeArray:(NSArray *)__unused array forCKey:(const char *)__unused key { } - (void)encodeData:(NSData *)__unused data forCKey:(const char *)__unused key { } - (void)encodeBytes:(uint8_t const *)__unused value length:(NSUInteger)__unused length forCKey:(const char *)__unused key { } - (void)encodeInt32Array:(NSArray *)__unused value forCKey:(const char *)__unused key { } - (void)encodeInt32Dictionary:(NSDictionary *)__unused value forCKey:(const char *)__unused key { } - (void)encodeDouble:(double)__unused value forCKey:(const char *)__unused key { } - (NSString *)decodeStringForCKey:(const char *)__unused key { return nil; } - (int32_t)decodeInt32ForCKey:(const char *)__unused key { return 0; } - (int64_t)decodeInt64ForCKey:(const char *)__unused key { return 0; } - (id)decodeObjectForCKey:(const char *)__unused key { return nil; } - (NSArray *)decodeArrayForKey:(NSString *)__unused key { return nil; } - (NSArray *)decodeArrayForCKey:(const char *)__unused key { return nil; } - (NSData *)decodeDataCorCKey:(const char *)__unused key { return nil; } - (void)decodeBytesForCKey:(const char *)__unused key value:(uint8_t *)__unused value length:(NSUInteger)__unused length { } - (NSDictionary *)decodeObjectsByKeys { return nil; } - (NSArray *)decodeInt32ArrayForCKey:(const char *)__unused key { return nil; } - (NSDictionary *)decodeInt32DictionaryForCKey:(const char *)__unused key { return nil; } - (double)decodeDoubleForCKey:(const char *)__unused key { return 0.0f; } @end