pragma mark 集合中对象的内存管理
pragma mark 概念
/**
1.如果将一个对象添加到数组中, 那么数组 会对象 进行一次 retain
2.当数组 移除一个对象之后, 会给这个对象 发送一条release消息
*/
pragma mark 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#pragma mark main函数
int main(int argc, const char * argv[])
{
#pragma 集合中对象的内存管理
@autoreleasepool {
#warning 1.如果将一个对象添加到数组中, 那么数组 会对象 进行一次 retain
Person *p = [Person new];
NSLog(@"retainCount = %lu",[p retainCount]);
// NSMutableArray *arrM = [NSMutableArray array]; // 这里不需要释放 因为使用的是类工厂方法创建 默认都加上了autorelease
NSMutableArray *arrM = [[NSMutableArray alloc]init]; // 只有使用alloc 、new 这些 对象方法 才需要 release
[arrM addObject:p];
NSLog(@"retainCount = %lu",[p retainCount]);
[p release];
NSLog(@"retainCount = %lu",[p retainCount]);
// 当数组对象释放之后, 会给数组中 所有的对象 发送一条release 消息
[arrM release];
#warning 2.当数组 移除一个对象之后, 会给这个对象 发送一条release消息
Person *p1 = [Person new]; // 1
NSLog(@"retainCount = %lu",[p1 retainCount]);
NSMutableArray *arrM1 = [[NSMutableArray alloc]init];
[arrM1 addObject:p1]; // 2
NSLog(@"retainCount = %lu",[p1 retainCount]);
[p1 release]; // 1
// 当数组 移除一个对象之后, 会给这个对象 发送一条release消息
[arrM1 removeObject:p1];
}
return 0;
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。