MemCache рд╡рд░реНрдЧ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕ рддреБрдЪреНрдЫ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдХрдо рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрд╛ рд░рд╣рддрд╛ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ JSON рдбреЗрдЯрд╛ рдФрд░ рдЫреЛрдЯреА рдЫрд╡рд┐рдпрд╛рдВред рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ, рдПрдХ NSMutableDictionary рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╕рд╣реЗрдЬреЗ рдЧрдП рдереЗред рд▓реЗрдХрд┐рди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рджреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рд╣реБрдИрдВ - рдХреЛрдб рджреЛрд╣рд░рд╛рд╡ рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рдЦреЛ рдЬрд╛рдиреЗ рдкрд░ рдкреЙрдк рд╡реНрдпреВ рдХреЙрдиреНрдЯреНрд░реЛрд▓рд░ред
рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рдиред
рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореЗрдХрд╛рдЪреЗ рд╕рд┐рдВрдЧрд▓рдЯрди рд╡рд░реНрдЧ рдФрд░ рджреЛ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖ, рдПрдХ рдПрдирдПрд╕рдПрд╕рдЯреНрд░рд┐рдВрдЧ рдФрд░ рдПрдирдПрд╕рдУрдмрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдПред
MemCache рдХреНрд▓рд╛рд╕ рдХреЛ рдереЛрдбрд╝реЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдХреИрд╢рд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рдерд╛ (рджреЛ рдорд┐рдирдЯ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдереЗ), рдореЗрдореЛрд░реАрд╡рд╛рд░реНрдирд┐рдВрдЧ рд╣реЛрдиреЗ рдкрд░ рдореЗрдореЛрд░реА рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ, рдФрд░ рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рд╕реНрд╡рд┐рдЪ рд╣реЛ рдЬрд╛рдПред
рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реНрд░реЛрдд рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдореБрдЦреНрдп рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред
Init рдкрджреНрдзрддрд┐ рдореЗрдВ, рд╣рдо рд╕реНрдореГрддрд┐ рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВред
- (id) init { self = [super init]; if (self != nil) { NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; [center addObserver:self selector:@selector(clearCache) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; [center addObserver:self selector:@selector(clearCache) name:UIApplicationWillResignActiveNotification object:nil]; _lifeTime = 60.0f; } return self; }
рдбреАрд▓реЙрдХ рдореЗрдВ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рдВрд╕ рдХреЛ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред
- (void)dealloc { NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; [center removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; [center removeObserver:self name:UIApplicationWillResignActiveNotification object:nil]; }
рдЪреВрдВрдХрд┐ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рдж рдпрд╛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдШрдЯрдирд╛рдУрдВ рдХреА рдШрдЯрдирд╛ рдкрд░ рдХрд┐рд╕реА рднреА рд╕рдордп рдХреИрд╢ рдХреЛ рд╕рд╛рдлрд╝ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдирдпрд╛ рддрддреНрд╡ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП, рдЬрдм рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдХреИрд╢ рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╕реНрдердЧрд┐рдд рдХреЙрд▓ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВред
- (void)setValue:(id)value forKey:(NSString *)key { if (!_cache) { _cache = [[NSMutableDictionary alloc] init]; } [_cache setValue:value forKey:key]; [NSObject cancelPreviousPerformRequestsWithTarget:_cache selector:@selector(removeObjectForKey:) object:key]; [_cache performSelector:@selector(removeObjectForKey:) withObject:key afterDelay:_lifeTime]; }
рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЕрдм рдХреИрд╢ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦреЗрдВ:
[jsonValue setMemCacheValueForKey:[[[connection originalRequest] URL] absoluteString]];
рдФрд░ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
id val = [[url absoluteString] memCacheValue];
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд▓рд┐рдВрдХ -
github.com/eltiren/MemCahce-IOSARC рд╕рдХреНрд╖рдо рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд PSред