博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6、OC —— 内存管理基本概念
阅读量:6952 次
发布时间:2019-06-27

本文共 1045 字,大约阅读时间需要 3 分钟。

  hot3.png

1、在有ARC之前,我们都是自己手动进行内存管理的,ARC的原理也是基于手动管理的。在今天都遍布ARC的情况下,让我们来了解手动释放内存是怎么一回事。

2、基本概念

    a)对象被创建的时候自带的引用计数器retainCount会被赋值为1,即 对象.retainCount=1

    b)对象调用一次retain方法时retainCount会+1,即[对象 retain]

    c)对象调用一次release方法时retainCount会-1,即[对象 release]

    d)当对象的retainCount等于0的时候,该对象将会被销毁,销毁前会调用dealloc方法;

3、实例

    a)Xcode5以上都默认使用ARC,得在工程下手动关闭ARC

    213854_s4qP_1444783.png

    b)创建一个Person类先,在main函数里创建,并调用它的retainCount,并逐步调用它的retain和release方法

    main.m

#import 
#import "Person.h"int main(int argc, const char * argv[]){    @autoreleasepool {                Person *p = [[Person alloc] init];        NSLog(@"%lu", p.retainCount);        // 1                [p retain];        NSLog(@"%lu", p.retainCount);        // 2                [p release];        NSLog(@"%lu", p.retainCount);        // 1                [p release];            }    return 0;}

    c)当对象的retainCount等于0时,对象会被销毁,那怎么知道对象被销毁呢,可以重写对象的dealloc方法

    Person.m

#import "Person.h"@implementation Person// 对象计数器为0时自动调用此方法- (void)dealloc{    NSLog(@"Person被销毁了");        [super dealloc];}@end

转载于:https://my.oschina.net/cobish/blog/352431

你可能感兴趣的文章
oralce入门学习
查看>>
编程开发之--java多线程学习总结(4)
查看>>
字符串匹配
查看>>
mysql搭建及数据迁移教程
查看>>
Python文档学习笔记(1)--使用Python 解释器
查看>>
myeclipse 8.5安装freemarker插件方法
查看>>
10 款最好的远程桌面软件
查看>>
JxBrowser之四:对Http Response Code的处理
查看>>
Linux课程---3、Linux远程登录和传输(操作Linux服务器软件)
查看>>
前端模板资源
查看>>
不仅仅是Google,您必须知道的全球十大地图API
查看>>
php排序
查看>>
JSP与Servlet之间传值
查看>>
JavaScript&jQuery.动态删除元素
查看>>
pickle和json模块
查看>>
Python基本语法_输入/输出语句详解
查看>>
用 Flask 来写个轻博客 (4) — (M)VC_创建数据模型和表
查看>>
快速入门分布式消息队列之 RabbitMQ(2)
查看>>
IIS安装与部署,站点的部署与配置
查看>>
Google两步验证的工作原理
查看>>