当我记录与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