@end
ÏÂÃæÊDzâÊÔÀà
KeyTest.h
[cpp]
//
// KeyTest.h
// DictionaryKeyObject
//
// Created by BruceYang on 12-7-31.
// Copyright (c) 2012Äê EricGameStudio. All rights reserved.
//
#import
#import "KeyObject.h"
@interface KeyTest : NSObject {
NSMutableDictionary* _dic;
}
-(id) init;
-(void) test;
-(void) add;
-(void) add1;
-(void) echo;
-(void) echo1;
-(void) search;
-(void) dealloc;
@end
//
// KeyTest.h
// DictionaryKeyObject
//
// Created by BruceYang on 12-7-31.
// Copyright (c) 2012Äê EricGameStudio. All rights reserved.
//
#import
#import "KeyObject.h"
@interface KeyTest : NSObject {
NSMutableDictionary* _dic;
}
-(id) init;
-(void) test;
-(void) add;
-(void) add1;
-(void) echo;
-(void) echo1;
-(void) search;
-(void) dealloc;
@end
KeyTest.mm
[cpp]
//
// KeyTest.mm
// DictionaryKeyObject
//
// Created by BruceYang on 12-7-31.
// Copyright (c) 2012Äê EricGameStudio. All rights reserved.
//
#import "KeyTest.h"
@implementation KeyTest
-(id) init {
if((self = [super init])) {
_dic = [[NSMutableDictionary alloc] init];
}
return self;
}
-(void) test {
NSMutableDictionary* dic = [[NSMutableDictionary alloc] init];
for(int i = 0; i < 5; ++ i) {
KeyObject* keyObject = [[KeyObject alloc] initWithX:i*5 y:i*3];
NSString* valueStr = [NSString stringWithFormat:@"Test%d", i];
/**
* ÔÚµ÷Óà setObject:forKey ·½·¨ÒÔºó£¬
* key ¶ÔÏóµÄÒýÓüÆÊýÒÀȻΪ 1£¬value ¶ÔÏóµÄÒýÓüÆÊýÔö¼ÓΪ 2~
*
*/
NSLog(@"1.kRefCount = %lu, vRefCount = %lu", [keyObject retainCount], [valueStr retainCount]); // 1, 1~
/**
* ×÷Ϊ²ÎÊý´«½øÀ´µÄ keyObject ²»ÊÇ autorelease µÄ¶ÔÏó£¬ËùÒÔÒªÊÖ¶¯µÄÊͷŵô~
* Ö®ËùÒÔҪȥÊÖ¶¯ÊͷŵôÊÇÒòΪ×Öµä¶ÔÏóÒѾ½«×÷Ϊ²ÎÊý´«½øÀ´µÄ keyObject ¼ü¶ÔÏóÉ±´ÁËÒ»·Ý~
* ÕâÒ²ÊÇ֮ǰÌáµ½µÄÔÚµ÷ÓÃ×Öµä¶ÔÏóµÄ setObject:forKey ·½·¨ºó keyObject ÒýÓüÆÊýΪʲôÒÀÈ»»¹ÊÇ 1 µÄÔÒò~
* ÒòΪ×Öµä¶ÔÏóÀïÃæµÄ¼ü¶ÔÏó²¢²»ÊÇʹÓõÄ×÷Ϊ²ÎÊý´«½øÀ´µÄÄǸö keyObject ~
*/
[dic setObject:valueStr forKey:keyObject];
[keyObject release];
NSLog(@"2.KRefCount = %lu, vRefCount = %lu", [keyObject retainCount], [valueStr retainCount]); // 1, 2~
}
NSLog(@"\n---------------------- ·Ö¸îÏß -------------------------\n");
for(KeyObject* keyObject in dic) {
NSString* valueStr = [dic objectForKey:keyObject];
NSLog(@"ValueStrReferenceCount = %lu", [valueStr retainCount]);
NSLog(@"keyObject.x = %d, keyObject.y = %d, valueStr = %@", keyObject.x, keyObject.y, valueStr);
}
/**
* ÒýÓüÆÊýΪ 1 µÄ×Öµä¶ÔÏó release Ò»ÏÂÖ®ºóÒýÓüÆÊýÒÀȻΪ 1£¬ºÎ½â£¿
* ±È½ÏºÏÀíµÄÒ»ÖÖ½âÊÍ£º
* dealloc Ö®ºóµÄ¶ÔÏóȥȡ retainCount »á·µ»Ø 1 ¶ø·Ç 0~
*/
NSLog(@"1.dicRefCount = %lu", [dic retainCount]); // 1~
[dic release];
NSLog(@"2.dicRefCount = %lu", [dic retainCount]); // 1~
}
-(void) add {
NSLog(@"add");
for(int i = 0; i < 5; ++ i) {
/**
* ÒòΪÊÇ autorelease µÄ¼ü¶ÔÏó£¬ËùÒÔʹÓÃÍê±Ïºó²»ÓÃÔÙÈ¥ÊÖ¶¯Êͷŵô~
*/
KeyObject* keyObject = [KeyObject kObjectWithX:i*5 y:i*3];
NSString* valueStr = [NSString stringWithFormat:@"Test%d", i];
[_dic setObject:valueStr forKey:keyObject];
}
NSLog(@"_dic.count = %lu", [_dic count]);
}
-(void) add1 {
NSLog(@"add");
for(int i = 0; i < 5; ++ i) {
/**
* ·Ç autorelease µÄ¼ü¶ÔÏó£¬Ê¹ÓÃÍê±ÏºóÒªÊÖ¶¯È¥ release µô£¬Ð§Âʽϸß(ÈËΪ¿ØÖƵÄÏú»Ùʱ»úÊÇ×î¼ÑµÄ)~
*/
KeyObject* keyObject = [[KeyObject alloc] initWithX:i*5 y:i*3];