當我記錄與NSArray
和NSString
對象保留計數,我有不平衡的行爲。 請參見下面的代碼,奇怪的行爲與retainCount
NSArray *aryTemp = [NSArray arrayWithObjects:@"One",nil];
NSLog(@"Retain Count :%d",[aryTemp retainCount]);
NSArray *aryTemp2 = [[NSArray alloc] initWithObjects:@"One",nil];
NSLog(@"Retain Count :%d",[aryTemp2 retainCount]);
NSString *strTemp = @"One";
NSLog(@"Retain Count :%d",[strTemp retainCount]);
NSString *strTemp2 = [[NSString alloc] initWithString:@"One"];
NSLog(@"Retain Count :%d",[strTemp2 retainCount]);
,這是輸出我得到
2011-03-01 19:19:32.410 Test[14607:207] Retain Count :37
2011-03-01 19:19:32.412 Test[14607:207] Retain Count :1
2011-03-01 19:19:32.413 Test[14607:207] Retain Count :2147483647
2011-03-01 19:19:32.413 Test[14607:207] Retain Count :2147483647
什麼是錯誤的代碼?
感謝
PRATIK哥斯瓦米
我想再說一遍:使用'retainCount'不是一個好主意,因爲它是一個實現細節,特別是單例和靜態對象會給你任意值的保留計數(儘管大部分時間是簡單地INT_MAX)。 – DarkDust 2011-03-01 14:48:43
好的,但爲什麼我有NSArray的垃圾值?我得到的保留數 - 37.爲什麼是這樣? – 2011-03-02 04:48:52
你怎麼知道37是垃圾值?這正是你不應該使用retainCount的原因。 – 2011-03-02 07:20:41