[_dic setObject:valueStr forKey:keyObject];
[keyObject release];
}
NSLog(@"_dic.count = %lu", [_dic count]);
}
/**
* objective-c ×ֵ䳣¹æµÄ±éÀú·½Ê½£¬ÏÈ¿ìËÙ±éÀú×ÖµäµÄ¼ü£¬È»ºóÓüüÕÒ³ö¶ÔÓ¦µÄÖµ~
*/
-(void) echo {
NSLog(@"echo");
NSLog(@"_dic.count = %lu", [_dic count]);
for(KeyObject* keyObject in _dic) {
NSString* valueStr = [_dic objectForKey:keyObject];
NSLog(@"keyObject.x = %d, keyObject.y = %d, valueStr = %@", keyObject.x, keyObject.y, valueStr);
}
}
/**
* ÅóÓÑÎÊÎÒÔõô´òÓ¡³ö NSMutableDictionary ÖеÄÄÚÈÝ£¬ÎÒ²»¼Ù˼Ë÷µØ±ã»Ø´ð£º±éÀú+´òÓ¡°¡~
* È»ºó£¬¶Ô·½Í¶À´±ÉÊÓµÄÒ»ÑÛ£¬¡°Äã¾Í²»ÖªµÀÖØÐ´Öµ¶ÔÏóµÄ -(NSString*) description;·½·¨£¿¡±
* ¶ÙʱÎÒ¾ÍɵÁË~ÔÚ java ÀïÃæÃ»ÉÙÕâô¸É£¬ÔÚ objective-c ÀïÃæ¾¹È»²»ÖªµÀ¾ÙÒ»·´Èý£¬ÊµÄË×ï¹ý~
*/
-(void) echo1 {
NSLog(@"echo1");
NSLog(@"_dic.count = %lu", [_dic count]);
NSLog(@"%@", _dic);
}
-(void) search {
NSLog(@" -------- search begin! --------");
KeyObject* k0 = [KeyObject kObjectWithX:5 y:3];
NSString* result0 = [_dic objectForKey:k0];
NSLog(@"½á¹ûΪ£º%@", result0);
KeyObject* k1 = [KeyObject kObjectWithX:20 y:12];
NSString* result1 = [_dic objectForKey:k1];
NSLog(@"½á¹ûΪ£º%@", result1);
NSLog(@" -------- search finish! --------");
}
-(void) dealloc {
[_dic release];
[super dealloc];
}
@end
//
// 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