×ö ios ¿ª·¢£¬NSDictionary¡¢NSMutableDictionary£¬NSMutableArray¡¢NSArray ¶¼ÊǺܳ£ÓõÄÈÝÆ÷Àà
Array ¾Í²»¶à×öÌÖÂÛÁË£¬½ñÌìµÄÎÄÕÂÖ÷ÒªÌÖÂÛ NSDictionary ºÍ NSMutableDictionary~
ÒÔÍùÎÒÓà cocoa µÄ Dictionary µÄʱºò£¬¶¼ÊÇÑ¡ÔñÓà NSString À´×÷Ϊ¼ü¶ÔÏóµÄÀàÐÍ¡£
Ò»Ö±¶¼Ã»Óгöʲô´óµÄÎÊÌ⣬ÓÃÆðÀ´ºÜ˳ÊÖ~
²»ÇÉ×òÌ칤×÷ÊÒÖеÄÁíÍâÒ»¸ö³ÉԱ˵Óà NSString ×ö¼üÀàÐͺÜÒµÓ࣬ƴ½Ó°¡¡¢½âÎö°¡Ê²Ã´µÄ£¬ÒµÓ࣡£¡
ÆäʵÎÒÒ»Ö±¶¼¾õµÃÓÃ×Ö·û´®Æ´½Ó½âÎöÕâÖÖģʽ»¹²»´íµÄ£¬²»¹ýºóÀ´Ìýµ½¶Ô·½µÄ¾ÙÖ¤£¬Ò²±»Ëµ·þÁË¡£
¶Ô·½µÄÖ÷Òª¹ÛÄî¾ÍÓÃ×Ô¶¨ÒåµÄ¶ÔÏóÀàÐÍÀ´×÷Ϊ×ÖµäµÄ¼üÀàÐÍ£¬
ÎÒ±»Ëµ·þµÄÔÒòºÜ¼òµ¥£¬×Ô¶¨ÒåµÄ¶ÔÏóÀàÐÍȷʵ¸ü½Ó½üÃæÏò¶ÔÏóµÄ˼¿¼Ä£Ê½~
ºÃ£¬ÎÒ³ÐÈÏÎÒ±»Ëµ·þÁË£¬²»¹ýÒòΪÎÒÊÖÍ·ÉÏÒ²ÓРһЩÊÂÇ飬ËùÒÔ²¢Ã»ÓÐÔÚÕâ¸öÎÊÌâÉÏÃæ×ö±àÂëÊÔÑé~
ÎÒÈÏΪcocoa µÄ×ÖµäÓ¦¸ÃÏñÖ§³Ö NSString ÄÇÑù£¬¶ÔÓû§×Ô¶¨ÒåµÄ¼ü¶ÔÏóÀàÐÍÌṩÁ¼ºÃµÄÖ§³Ö¡£
µ«ÊÂʵ¾ÍÊÇÕâô´ò»÷ÈË£¬µ±È»£¬×îÏȱ»´ò»÷µÄ²»ÊÇÎÒ£¬ÊÇÄǸöÌá³ö×Ô¶¨Òå¼ü¶ÔÏóÀàÐÍµÄ»ï¼Æ¡£
ËûÓöµ½µÄµÚÒ»¸öÎÊÌâ¾ÍÊÇ£¬´Ó NSObject À©Õ¹³öÀ´µÄÒ»¸öÀֻ࣬°üº¬Á½¸öint Ð͵ÄÊôÐÔ
È»ºó£¬ÓÃÕâ¸öÀà×÷Ϊ×ÖµäµÄ¼üµÄʱºò£¬¾¹È»ÔÚ setObject: forKey£º·½·¨µ÷ÓõÄʱºò£¬
±¨³ö unrecognized selector "copyWithZone:" µÄ´íÎó~
˼ââÁ¼¾ÃÍâ¼ÓgoogleÒ»·¬£¬ÖÕÓÚ·¢ÏÖÔÀ´ÊÇÒªÔÚÀ©Õ¹ÀàÖн« copyWithZone Õâ¸ö·½·¨ÏÔʽµÄÖØÐ´Ò»ÏÂ~
£¨copyWithZone Õâ¸ö·½·¨ÔÚ NSObject ÀïÃæÓÐËù¶¨Ò壬±¨´í¾ÍÊÇÒòΪ¸ÃÀàÐÍÈç¹ûÒª×÷Ϊ×ÖµäµÄ¼ü¾Í±ØÐëҪʵÏÖÕâ¸ö·½·¨£©~
µ±È»£¬ÎÊÌâÈç¹ûÕâôÇáÒ׾ͱ»¸ÉµôÁË£¬ÄÇÎÒÒ²¾Íû±ØÒªÐ´²©ÎļÇÔØÏÂÀ´ÁË~
×ÖµäµÄ¼ü×î»ù±¾µÄÒªÇó¾ÍÊDz»ÄÜÖØ¸´¡£¡£
¸ù¾ÝÎÒ×öµÄ±àÂë²âÊÔ£¬copyWithZone Êǽ« ¼ü¶ÔÏó²ÎÊý¿Ë¡һ·Ý£¬·ÅÖÃÔÚ×Öµä¶ÔÏóÀïÃæ~
µ«ÊÂÏÈÒª×öһЩ¼ì²é£¬¼ì²éмÓÈëµÄ¼üºÍÒÑ´æÔڵļüÃÇÊÇ·ñÖØ¸´£¬Èç¹ûÖØ¸´µÄ»°£¬¾Í¸²¸ÇËùÉèÖõÄÖµ»òÕߺöÂÔÕâÒ»´ÎÌí¼Ó~
²»¹ýÔõôÑù£¬¾ÍÊÇ×ֵ䲻ÔÊÐí´æÔÚÁ½¸öһģһÑùµÄ¼ü£¬·ñÔò¼ìË÷ÖµµÄʱºò»á·¢Éúì¶Ü~
¼ì²éÊÇ·ñÖØ¸´Ö÷Òª¼¯ÖÐÔÚ NSObject »ù´¡ÀàµÄÁ½¸ö·½·¨ÉÏÃæ£º
-(NSUInteger) hash;
-(BOOL) isEqual:(id)object;
hashÏ൱ÓÚ¶ÔÒ»ÍÅÊý¾Ý×ö md5 ÕªÒª£¬µÃ³öËûµÄÊý×ÖÇ©Ãû£¬´óÒâ¾ÍÊÇÁ½ÍÅÊý¾ÝÖ»ÒªÓÐÒ»¶¡µã¶ùµÄ²»Ò»Ñù
·µ»ØµÄÄǸöÎÞ·ûºÅÕûÊýµÄÖµ¶¼²»»áÏàͬ£¨ÄÇÊÇÍêÃÀµÄ¹þÏ£Ëã·¨£¬ÏÖʵÉú»îÖÐÖ»Òª±£Ö¤ºÜ´ó¼¸ÂÊÏÂÃæ²»Í¬µÄÊý¾Ý·µ»Ø²»¾¡ÏàͬµÄ·µ»ØÖµ¾ÍÐÐÁË£©
¾ÝÎÒÍÆ²â£¬¼ì²éÐÂÌí¼ÓµÄ¼üºÍÒÑ´æÔڵļüÊÇ·ñÖØ¸´°üº¬Á½²½£º
µÚÒ»²½ÊǶԱÈhash£¬Èç¹ûhash¶¼²»ÏàͬµÄ»°£¬Åж¨ÎªÁ½¸ö¼ü²»Í¬£¬½«µÚ¶þ²½Ê¡ÂÔµô£»
µÚ¶þ²¿ÊÇÔÚ hash ÏàµÈµÄ»ù´¡ÉϲŻáÖ´Ðеģ¬hashÏàµÈºó£¬ÔÙÓà isEqual ·½·¨À´Åж¨Á½¸ö¼üÊÇ·ñÏàµÈ~
£¨´ËÏàµÈ²»ÊÇ˵¶ÔÏóµÄÄÚ´æµØÖ·ÏàµÈ£¬¶øÊǶÔÏóÖÐËù°üº¬µÄÊý¾ÝÊÇ·ñÏàµÈ£©~
×ÛÉÏ£¬Èç¹ûÒª×Ô¶¨Òå×Öµä¼ü¶ÔÏóµÄÀàÐÍ£¬ÒªÖØÐ´ÏÂÃæµÄ¼¸¸ö·½·¨£º
1¡£copyWithZone£ºÕâ¸öÊDZØÐëÖØÐ´µÄ£¬·ñÔòÖ±½Ó±¨ÕÒ²»µ½·½·¨µÄ´íÎó
2¡£hash£ºÕâ¸öÄã¿ÉÒÔ²»ÖØÐ´£¬µ«ÊÇÄ㾡¿ÉÒÔÊÔһϣ¬µ°ÌÛËÀÄã~
3¡£isEqual: Õâ¸ö·½·¨±ØÐëÒªÖØÐ´Ò»Ï£¬Äã²»ÖØÐ´µÄ»°£¬Ä¬ÈϵÄʵÏÖ¾ÍÊǶԱÈÁ½¸ö¶ÔÏóµÄÄÚ´æµØÖ·
Ö»ÓÐÔÚÁ½¸ö¶ÔÏóÊÇͬһ¸ö¶ÔÏóµÄʱºò£¬²Å»á·µ»Ø YES¡£
µ±È»Õâ¸ö²»ÊÇÎÒÃÇËùÐèÒªµÄ£¬ÎÒÃÇÐèÒªµÄ¾ÍÊÇÖ±½Ó¹¹ÔìÒ»¸öеļü¶ÔÏó£¬Ö»ÒªÕâ¸öй¹ÔìµÄ¼ü¶ÔÏóÖÐËù°üº¬µÄÊý¾Ý
Óë×ÖµäÖеļüÏàÒ»ÖÂÁË£¬¾ÍÈ¡³ö×ÖµäÖÐÄǸö¼ü¶ÔÏóËù¶ÔÓ¦×ŵÄÖµ¶ÔÏó~
ÏÂÃæÉÏ´úÂë(½¨Ò»¸ö mac command Line Project£¬½«ÏÂÃæµÄ¼¸¸öÀàÎļþ×§½øÈ¥)£¬
¸ø³öÒ»¸öµäÐ͵ÄÄܹ»Ö±½ÓÄÃÀ´×÷Ϊ×Öµä¼ü¶ÔÏóµÄÀàÐͶ¨Ò壺
KeyObject.h
[cpp] //
// KeyObject.h
// DictionaryKeyObject
//
// Created by BruceYang on 12-7-29.
// Copyright (c) 2012Äê EricGameStudio. All rights reserved.
//
#import
@interface KeyObject : NSObject {
int _x;
int _y;
}
@property int x;
@property int y;
+(id) kObjectWithX:(int)x y:(int)y;
-(id) initWithX:(int)x y:(int)y;
-(id) copyWithZone:(NSZone*)zone;
-(NSString*) description;
-(NSUInteger) hash;
-(BOOL) isEqual:(id)object;
@end
//
// KeyObject.h
// DictionaryKeyObject
//
// Created by BruceYang on 12-7-29.
// Copyright (c) 2012Äê EricGameStudio. All rights reserved.
//
#import
@interface KeyObject : NSObject {
int _x;
int _y;
}
@property int x;
@property int y;
+(id) kObjectWithX:(int)x y:(int)y;
-(id) initWithX:(int)x y:(int)y;
-(id) copyWithZone:(NSZone*)zone;
-(NSString*) description;
-(NSUInteger) hash;
-(BOOL) isEqual:(id)object;
@end
KeyObject.m
[cpp]
//
// KeyObject.m
// DictionaryKeyObject
//
// Created by BruceYang on 12-7-29.
// Copyright (c) 2012Äê EricGameStudio. All rights reserved.
//
#import "KeyObject.h"
@implementation KeyObject
@synthesize x = _x;
@synthesize y = _y;
+(id) kObjectWithX:(int)x y:(int)y {
return [[[self alloc] initWithX:x y:y] autorelease];
}
-(id) initWithX:(int)x y:(int)y {
if((self = [super init])){
_x = x;
_y = y;
}
return self;
}
/**
* ×¢Ò⣺
* ²»ÄÜ autorelease£¡setObject:forKey: µÄʱºò£¬key ¶ÔÏóµÄ retainCount ²¢²»»á¼Ó 1~
* autorelease µÄ»°µ¼ÖÂÒ»ÍÑÀëËùÔÚµÄÓò£¬¼ü¶ÔÏó¾ÍʧЧ£¬Òý·¢ EXEC_BAD_ACCESS ´íÎó~
* ÓÃ Instrument