Objective-C之集合对象的内存管理

news/2024/7/20 15:50:52 标签: 内存管理

集合对象的内存管理

本小节知识点:

  1. 【掌握】集合对象的内存管理
  2. 【理解】集合对象内存管理总结

1.集合对象的内存管理

  • 当一个对象加入到集合中,那么该对象的引用计数会+1
  • 当集合被销毁的时候,集合会向集合中的元素发送release消息
 NSMutableArray *arr = [[NSMutableArray alloc] init];

 Person *p = [[Person alloc] init];
 NSLog(@"retainCount = %lu", [p retainCount]);
 [arr addObject:p];
 NSLog(@"retainCount = %lu", [p retainCount]);
 [p release];
 NSLog(@"retainCount = %lu", [p retainCount]);
 [arr release];
  • 当一个对象加入到集合中,那么该对象的引用计数会+1
  • 当把一个对象从集合中移除时,会向移除的元素发送release消息
 NSMutableArray *arr = [[NSMutableArray alloc] init];
 Person *p = [[Person alloc] init];
 NSLog(@"retainCount = %lu", [p retainCount]);
 [arr addObject:p];
 NSLog(@"retainCount = %lu", [p retainCount]);
 [arr removeObject:p];
 NSLog(@"retainCount = %lu", [p retainCount]);
 [p release];
 [arr release];

2.集合对象内存管理总结

  • 1.官方内存管理原则

    • 1> 当调用alloc、new、copy(mutableCopy)方法产生一个新对象的时候,就必须在最后调用一次release或者autorelease
    • 2> 当调用retain方法让对象的计数器+1,就必须在最后调用一次release或者autorelease
  • 2.集合的内存管理细节

    • 1> 当把一个对象添加到集合中时,这个对象会做了一次retain操作,计数器会+1
    • 2> 当一个集合被销毁时,会对集合里面的所有对象做一次release操作,计数器会-1
    • 3> 当一个对象从集合中移除时,这个对象会一次release操作,计数器会-1
  • 3.普遍规律

    • 1> 如果方法名是add\insert开头,那么被添加的对象,计数器会+1
    • 2> 如果方法名是remove\delete开头,那么被移除的对象,计数器-1

http://www.niftyadmin.cn/n/1779555.html

相关文章

视频网站服务器用什么配置好?

视频网站服务器用什么配置好? 像一类的视频网站,人数是不可能会少的,这样就容易造成带宽占用大,访问量上不去的问题,而且后续升级费用也会超出商家的预算,这样做起来就很不划算那么该如何解决这样的现状呢…

Oracle 12C -- CDB的启动过程

以启动DB12为例子 $ sqlplus /as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Sun Nov 1 15:48:15 2015Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to an idle instance. 1.nomount阶段 SQL> startup nomount; ORA…

爬虫_Crawler4j的使用

Crawler4j的使用 (以下内容全部为转载,供自己查阅用) 下载地址: http://code.google.com/p/crawler4j/ Crawler4j的使用 网上对于crawler4j这个爬虫的使用的文章很少,Google到的几乎没有,只能自己根据crawl…

数据备份的必要性!

导语: 计算机里面重要的数据,不论是对企业用户还是对个人用户,都是至关重要的,若不慎丢失,都会造成不可估量的损失。跟佰佰安全网小编一起了解一下数据备份的必要性是什么吧。 为了保障生产、销售、开发的正常运行&am…

SCOM-Agent安装—基于Uinx\Linux

【SC】SCOM-Agent安装—基于Uinx\Linux--------Uinx\Linux---SCOM-Agent安装------对于SCOM代理的安装,网上已经有相当多的图文教程了,为什么还有要写呢?其实网上的其他教程有一些地方是存在瑕疵的,新手如果只看其中一篇估计会碰壁…

学点经济学知识(一)

“当你深入专研某个领域的时候,你渐渐会发现它又跟其他领域有那么点关联”。任何事物都有共同性,“他山之石,可以攻玉”,多学习一种思维,可以让自己多一个角度。 作为一个程序员的我,桌面上放的都是技术类书…

服务器托管一年的价格是多少

服务器托管一年的价格是多少 有人问什么是服务器租用?什么是服务器托管?那么我来解答一下这个专业性的问题。 首先,服务器租用就是我们客户无需自己购买服务器,就是直接使用IDC运营商的服务器,这样一来我们只需要按照…

python---连接MySQL第四页

python缓存结果集式的cursor可以用来提高性能。 例子: #!conding:utf-8 from mysql.connector import errorcode import mysql.connectorcnxNone cursorNone try:cnx mysql.connector.connect(host192.168.1.201,port3306,useradmin,password131417)cursorcnx.curs…