关于OC-集合的内存管理
大讲台 2015-12-18 02:14:59 集合内存管理:
#import
#import "Student.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Student *s1 = [[Student alloc]init];
NSLog(@"s1:%ld",s1.retainCount);
NSMutableArray* array = [[NSMutableArray alloc] init];
// 一个对象加入到数组中会被保留使用权,引用计数+1
[array addObject:s1];
NSLog(@"s1:%ld",s1.retainCount);
// 移除数组中的一个对象,数组会释放这个对象的所有权,该对象的引用计数-1
[array removeObject:s1];
NSLog(@"s1:%ld",s1.retainCount);
// 字典同数组的原理是一样地
NSMutableDictionary* dic = [[NSMutableDictionary alloc] init];
[dic setObject:s1 forKey:@"key1"];
NSLog(@"s1:%ld",s1.retainCount);
// [dic removeObjectForKey:@"key1"];
// NSLog(@"s1:%ld",s1.retainCount);
// 当集合对象本身释放的时候,会释放集合内所有对象的所有权
[dic release];
NSLog(@"s1:%ld",s1.retainCount);
}
return 0;
}