123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- //
- // KCHMainViewController.m
- // KacheDemo
- //
- // Created by jiajun on 7/25/12.
- // Copyright (c) 2012 __MyCompanyName__. All rights reserved.
- //
- #import "KCHMainViewController.h"
- #import "KCH.h"
- @interface KCHMainViewController ()
- @property (strong, nonatomic) Kache *kache;
- @property (strong, nonatomic) UILabel *banner;
- @property (strong, nonatomic) UILabel *body;
- @property (strong, nonatomic) UIScrollView *bodyBackground;
- @property (assign, nonatomic) NSInteger offset;
- @property (assign, nonatomic) NSInteger timmer;
- @property (assign, nonatomic) NSInteger counter;
- @end
- @implementation KCHMainViewController
- @synthesize kache = _kache;
- @synthesize banner = _banner;
- @synthesize body = _body;
- @synthesize bodyBackground = _bodyBackground;
- @synthesize offset = _offset;
- @synthesize timmer = _timmer;
- @synthesize counter = _counter;
- - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
- {
- self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
- if (self) {
- self.kache = [[Kache alloc] initWithFiletoken:@"demo"];
- self.timmer = 0;
- self.offset = 0;
- }
- return self;
- }
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- self.view.backgroundColor = [UIColor whiteColor];
-
- self.banner = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 10.0f, 320.0f, 20.0f)];
- self.banner.backgroundColor = [UIColor clearColor];
- self.banner.textAlignment = NSTextAlignmentCenter;
- self.banner.font = [UIFont boldSystemFontOfSize:18];
- [self.view addSubview:self.banner];
-
- self.body = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 300.0f, 410.0f)];
- self.body.backgroundColor = [UIColor clearColor];
- self.body.numberOfLines = 0;
- self.body.lineBreakMode = NSLineBreakByCharWrapping;
- self.body.textAlignment = NSTextAlignmentLeft;
- self.body.text = @"";
- [self.body sizeToFit];
- self.body.frame = CGRectMake(0.0f, 0.0f, 300.0f, self.body.bounds.size.height);
-
- [self countDown];
- [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(countDown) userInfo:nil repeats:YES];
- self.bodyBackground = [[UIScrollView alloc] initWithFrame:CGRectMake(10.0f, 40.0f, 320.0f, 410.0f)];
- self.bodyBackground.contentSize = CGSizeMake(300.0f, self.body.bounds.size.height);
-
- [self.bodyBackground addSubview:self.body];
- [self.view addSubview:self.bodyBackground];
- NSInteger delay = 1.0f;
- // Begin Test.
- [self printLog:@"===== Test Begin ====="];
- [self performSelector:@selector(simpleTest) withObject:nil afterDelay:delay]; delay += 12;
- [self performSelector:@selector(queueTest) withObject:nil afterDelay:delay]; delay += 13;
- [self performSelector:@selector(poolTest) withObject:nil afterDelay:delay]; delay += 8;
- [self performSelector:@selector(saveTest) withObject:nil afterDelay:delay]; delay += 7;
- [self performSelector:@selector(loadTest) withObject:nil afterDelay:delay]; delay += 5;
- [self performSelector:@selector(printLog:) withObject:@"===== All Test Done =====" afterDelay:delay];
- }
- - (void)simpleTest
- {
- [self printLog:@"====== Begin Simple Test. ======"];
- // Set Simple Cache.
- [self printLog:@"Set 12 Simple Cache Value:\nkey_0 ~ key_11."];
-
- for (int i = 0; i < 12; i ++) {
- // After (i+3) seconds, the value will be expired.
- [self.kache setValue:[NSString stringWithFormat:@"ValueWithLifeDuration-%d-AndOffset-%d", i + 3, i]
- forKey:[NSString stringWithFormat:@"key_%d", i]
- expiredAfter:i + 3];
- }
-
- [self performSelector:@selector(performPrintValue:) withObject:@"key_1" afterDelay:1.0f];
- [self performSelector:@selector(performPrintValue:) withObject:@"key_5" afterDelay:2.0f];
-
- [self performSelector:@selector(printLog:)
- withObject:@"Waiting..."
- afterDelay:3.0f];
-
- [self performSelector:@selector(printLog:)
- withObject:@"After 5 seconds.\nObject: \"key_1\" has been expired."
- afterDelay:4.0f];
- [self performSelector:@selector(performPrintValue:) withObject:@"key_1" afterDelay:5.0f];
- [self performSelector:@selector(printLog:)
- withObject:@"After 10 seconds.\nObject: \"key_5\" has been expired."
- afterDelay:9.0f];
- [self performSelector:@selector(performPrintValue:) withObject:@"key_5" afterDelay:10.0f];
- }
- - (void)queueTest
- {
- [self printLog:@"====== Begin Queue Test. ======"];
- // Set a Queue with Default Size 10.
- [self printLog:@"Push 10 values to the default queue."];
- [self.kache newQueueWithName:@"for_test_queue" size:10];
- for (int i = 0; i < 10; i ++) {
- [self.kache pushValue:[NSString stringWithFormat:@"QueueValue-%d", i] toQueue:@"for_test_queue"]; // Default Queue.
- }
- for (int i = 0; i < 11; i ++) {
- [self performSelector:@selector(printLog:)
- withObject:[NSString stringWithFormat:@"Pop a Value:\n\"%@\"", [self.kache popFromQueue:@"for_test_queue"]]
- afterDelay:i + 1];
- }
- }
- - (void)poolTest
- {
- [self printLog:@"====== Begin Pool Test. ======"];
- // Pool Test
- [self printLog:@"Set 10 values to the default pool."];
-
- [self.kache newPoolWithName:@"for_test_pool" size:10];
- for (int i = 0; i < 10; i ++) {
- // After (i+3) seconds, the value will be expired.
- [self.kache setValue:[NSString stringWithFormat:@"PoolValue-Offset-%d", i]
- inPool:@"for_test_pool"
- forKey:[NSString stringWithFormat:@"pool_key_%d", i]
- expiredAfter:i + 3];
- }
-
- [self performSelector:@selector(printLog:)
- withObject:[NSString stringWithFormat:@"Value of pool_key_0: \"%@\"", [self.kache valueForKey:@"pool_key_0"]]
- afterDelay:1.0f];
- [self performSelector:@selector(printLog:)
- withObject:[NSString stringWithFormat:@"Value of pool_key_1: \"%@\"", [self.kache valueForKey:@"pool_key_1"]]
- afterDelay:2.0f];
- [self performSelector:@selector(printLog:)
- withObject:@"Set 2 more value to the Pool."
- afterDelay:3.0f];
- [self.kache setValue:[NSString stringWithFormat:@"PoolValue-Offset-%d", 10]
- inPool:@"for_test_pool"
- forKey:[NSString stringWithFormat:@"pool_key_%d", 10]
- expiredAfter:20];
- [self.kache setValue:[NSString stringWithFormat:@"PoolValue-Offset-%d", 11]
- inPool:@"for_test_pool"
- forKey:[NSString stringWithFormat:@"pool_key_%d", 11]
- expiredAfter:20];
-
- [self performSelector:@selector(printLog:)
- withObject:@"Value of pool_key_0 and pool_key_1 should be removed."
- afterDelay:4.0f];
- [self performSelector:@selector(printLog:)
- withObject:[NSString stringWithFormat:@"Value of pool_key_0: \"%@\"", [self.kache valueForKey:@"pool_key_0"]]
- afterDelay:5.0f];
- [self performSelector:@selector(printLog:)
- withObject:[NSString stringWithFormat:@"Value of pool_key_1: \"%@\"", [self.kache valueForKey:@"pool_key_1"]]
- afterDelay:6.0f];
- }
- - (void)saveTest
- {
- [self printLog:@"====== Begin Save Test. ======"];
-
- [self printLog:@"Set 10 simple values."];
- for (int i = 0; i < 12; i ++) {
- // expiredAfter:0 means expired after default duration (KACHE_DEFAULT_LIFE_DURATION: 10 days by default.)
- [self.kache setValue:[NSString stringWithFormat:@"SaveNewValueWithLifeDuration-%d-AndOffset-%d", i + 3, i]
- forKey:[NSString stringWithFormat:@"save_key_%d", i]
- expiredAfter:0];
- }
- [self performSelector:@selector(printLog:)
- withObject:[NSString stringWithFormat:@"Value of \"save_key_0\"\n\"%@\"",
- [self.kache valueForKey:@"save_key_0"]]
- afterDelay:1.0f];
- [self performSelector:@selector(printLog:) withObject:@"Push 10 values to the Queue." afterDelay:2.0f];
- [self.kache newQueueWithName:@"for_save_test_queue" size:10];
- for (int i = 0; i < 10; i ++) {
- [self.kache pushValue:[NSString stringWithFormat:@"SaveNewQueueValue-%d", i] toQueue:@"for_save_test_queue"];
- }
- [self performSelector:@selector(printLog:)
- withObject:[NSString stringWithFormat:@"Do one Pop:\n\"%@\"",
- [self.kache popFromQueue:@"for_save_test_queue"]]
- afterDelay:3.0f];
-
- [self performSelector:@selector(printLog:) withObject:@"Set 10 values to the Pool." afterDelay:4.0f];
-
- [self.kache newPoolWithName:@"for_save_test_pool" size:10];
- for (int i = 0; i < 10; i ++) {
- // expiredAfter:0 means expired after default duration (KACHE_DEFAULT_LIFE_DURATION: 10 days by default.)
- [self.kache setValue:[NSString stringWithFormat:@"SaveNewPoolValue-Offset-%d", i]
- inPool:@"for_save_test_pool"
- forKey:[NSString stringWithFormat:@"pool_key_%d", i]
- expiredAfter:0];
- }
- [self performSelector:@selector(printLog:)
- withObject:[NSString stringWithFormat:@"Value of \"pool_key_0\"\n\"%@\"",
- [self.kache valueForKey:@"pool_key_0"]]
- afterDelay:5.0f];
- [self performSelector:@selector(printLog:) withObject:@"Save to Disk." afterDelay:6.0f];
- [self.kache save];
- }
- - (void)loadTest
- {
- [self printLog:@"====== Begin Load Test. ======"];
-
- Kache *tmpKache = [[Kache alloc] initWithFiletoken:@"demo"];
- [tmpKache load];
- [self printLog:@"New Kache instance load from disk."];
- [self performSelector:@selector(printLog:)
- withObject:[NSString stringWithFormat:@"Value of \"save_key_0\"\n\"%@\"",
- [tmpKache valueForKey:@"save_key_0"]]
- afterDelay:1.0f];
-
- [self performSelector:@selector(printLog:)
- withObject:[NSString stringWithFormat:@"Do one Pop:\n\"%@\"",
- [tmpKache popFromQueue:@"for_save_test_queue"]]
- afterDelay:2.0f];
-
- [self performSelector:@selector(printLog:)
- withObject:[NSString stringWithFormat:@"Value of \"pool_key_0\"\n\"%@\"",
- [tmpKache valueForKey:@"pool_key_0"]]
- afterDelay:3.0f];
- }
- - (void)performPrintValue:(NSString *)key
- {
- [self printLog:[NSString stringWithFormat:@"Value of %@:\n\"%@\"",
- key, [self.kache valueForKey:key]]];
- }
- - (void)countDown
- {
- self.banner.text = [NSString stringWithFormat:@"Kache Demo, %d second(s)", self.timmer];
- self.timmer ++;
- }
- - (void)printLog:(NSString *)log
- {
- NSLog(@"%@", log);
- self.body.text = [NSString stringWithFormat:@"%@\n\n%@", log, self.body.text];
- [self.body sizeToFit];
- self.body.frame = CGRectMake(0.0f, 0.0f, 300.0f, self.body.bounds.size.height);
- self.bodyBackground.contentSize = CGSizeMake(300.0f, self.body.bounds.size.height);
- }
- - (void)viewDidUnload
- {
- [super viewDidUnload];
- // Release any retained subviews of the main view.
- }
- - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
- {
- return (interfaceOrientation == UIInterfaceOrientationPortrait);
- }
- @end
|