- void arrayMemory() {
- // 1
- Student *stu1 = [[Student alloc] init];
- Student *stu2 = [[Student alloc] init];
- Student *stu3 = [[Student alloc] init];
-
- NSLog(@"stu1:%zi", [stu1 retainCount]);
-
- // 当把一个对象塞进数组中时,这个对象的计数器会加1,也就是说数组会对它做一次retain操作
- // 2
- NSArray *array = [[NSArray alloc] initWithObjects:stu1, stu2, stu3, nil];
- NSLog(@"arrayretaincount=%zi", [array retainCount]);
- NSLog(@"stu1:%zi", [stu1 retainCount]);
-
- NSLog(@"arraycount=%zi", array.count);
- NSLog(@"arrayretaincount=%zi", [array retainCount]);
-
- // 1
- [stu1 release];
- [stu2 release];
- [stu3 release];
- NSLog(@"arrayretaincount=%zi", [array retainCount]);
- // 数组被销毁的时候,会对内部的所有元素都做一次release操作
- // 0
-
- [array release];
- // [array release];
- NSLog(@"arrayretainCount=%zi", [array retainCount]);
- }
复制代码
为什么最后一次[array retainCount]输出结果为1?
我调用了 [array release]; 应该把array销毁了 array应该不存在了 我打印出来结果却依然为1 |
|