oc55--ARC单个对象的内存管理
// Person.h#import <Foundation/Foundation.h>@interface Person : NSObject@end
// Person.m#import "Person.h"@implementation Person- (void)dealloc {NSLog(@"%s", __func__); // [super dealloc]; //ARC不准写 } @end
// // main.m // ARC基本概念 // 不准许使用retain,release,dealloc里面不准许[super dealloc],编译器特性不是运行时特性,是xocde的功能,不是运行时跟你回收内存,而是xcode在编译的时候会跟你插入retain,release,是xcode帮你写了一些释放内存的代码。其他语言的垃圾回收机制是定时的去查看,没有使用就回收,ARC是写好了代码,执行代码,不是定时的去查看。完全消除了手动内存的管理。ios5之后默认就是ARC的。 插入代码之后就可以在手机上面运行了。#import <Foundation/Foundation.h> #import "Person.h"int main(int argc, const char * argv[]) {Person *p1 = [[[Person alloc] init] autorelease]; //报错,ARC不准写autorelease//默认情况下所有的指针都是强指针Person *p = [[Person alloc] init];[p retain]; //报错,ARC不准写retain[p release]; //报错,ARC不准写release {Person *p5 = [[Person alloc]init]; //大括号执行完,p5就销毁了,就没有强指针指向这个对象了,那么这个对象就销毁了} // [Person dealloc] {Person *p6 = [[Person alloc]init]; // p6 = nil; // 只要没有强指针,对象就释放。单个对象内存管理:不使用就置位nil,// [Person dealloc] }{// ARC判断对象是否释放,并不是判断引用计数。 ARC的判断准则: 只要没有强指针指向对象, 对象就会释放// 默认情况下所有的指针都是强指针Person *p = [[Person alloc] init];p = nil; //[Person dealloc]__strong Person *p1 = [[Person alloc] init]; // // 弱指针__weak Person *p2 = p1;p1 = nil; //[Person dealloc]// 在开发中, 千万不要使用一个弱指针保存一个刚刚创建的对象// 立即释放__weak Person *p3 = [[Person alloc] init]; //[Person dealloc] }return 0; }
oc55--ARC单个对象的内存管理相关推荐
- 视频教程-iOS底层原理班(下)/OC对象/关联对象/多线程/内存管理/性能优化-iOS
iOS底层原理班(下)/OC对象/关联对象/多线程/内存管理/性能优化 小码哥教育CEO,曾开发了2个iOS的流行开源框架(MJRefresh.MJExtension),目前在国内的使用率非常高. 李 ...
- iOS底层原理班(下)/OC对象/关联对象/多线程/内存管理/性能优化-李明杰-专题视频课程...
iOS底层原理班(下)/OC对象/关联对象/多线程/内存管理/性能优化-236人已学习 课程介绍 得遇名师,突飞猛进!iOS培训王者MJ(李明杰)老师精心研发,iOS进阶课程,实用技术 ...
- Python对象及内存管理
对象类型 标准类型 Integer.Boolean.Long integer.Floating point real number.Complex number.String.List.Tuple.D ...
- java学习二---对象和内存管理
1.实例变量和类变量的内存分配 类变量 :使用static修饰的成员变量是类变量,属于该类本身 实例变量:没有使用static修饰的成员变量是实例变量,属于该类的实例 由于同一个JVM内每个类只对应一 ...
- c++ 类和对象的内存管理
c++类对象中的成员变量和成员函数是分开存储的 成员变量: 普通成员变量:存储在对象中,与struct变量有相同的内存布局和字节对齐方式 静态成员变量:存储于全局数据区中 成员函数:存储于代码段中 c ...
- 关于内存管理/set/get方法
MRC状态下 1 任何继承NSObject的对象,存放于堆控件中,都需要手动管理内存 . 2 基本数据类型放到栈中,对象放到堆空间中,内存是有系统管理的.(int\float\enum\struct) ...
- OC 知识:彻底理解 iOS 内存管理(MRC、ARC)
1. 什么是内存管理 程序在运行的过程中通常通过以下行为,来增加程序的的内存占用 创建一个OC对象 定义一个变量 调用一个函数或者方法 而一个移动设备的内存是有限的,每个软件所能占用的内存也是有限的 ...
- iOS开发ARC内存管理技术要点
本文来源于我个人的ARC学习笔记,旨在通过简明扼要的方式总结出iOS开发中ARC(Automatic Reference Counting,自动引用计数)内存管理技术的要点,所以不会涉及全部细节.这篇 ...
- iOS开发ARC内存管理
本文的主要内容: ARC的本质 ARC的开启与关闭 ARC的修饰符 ARC与Block ARC与Toll-Free Bridging ARC的本质 ARC是编译器(时)特性,而不是运行时特性,更不是垃 ...
- iOS 下ARC的内存管理机制
本文来源于我个人的ARC学习笔记,旨在通过简明扼要的方式总结出iOS开发中ARC(Automatic Reference Counting,自动引用计数)内存管理技术的要点,所以不会涉及全部细节.这篇 ...
最新文章
- MindInsight训练可视整体设计介绍
- 关于征集2020重大科学问题和工程技术难题的通知
- 安装Windows Vista
- 《跃迁 从技术到管理的硅谷路径》读后感
- [转]数据库开发21条军规
- Java的内置垃圾收集如何使您的生活更美好(大部分时间)
- Java EE 8中的MVC 1.0:使用Facelets入门
- HTML5 API详解(13):video/audio 视频/音频
- 社区出入登记1.0.53完整安装包+小程序前端
- 【剑指Offer】29、最小的K个数
- vue的json格式化工具json-viewer
- jdk1.8 64位 32位免费下载
- 2021年最值得推荐的10款数据可视化工具,看完我收藏了
- 8086/8088CPU内部结构
- 【实用】SAP成本组件分割价格取数逻辑
- 关于RAID磁盘阵列与阵列卡的介绍 —— 做一个懂它的男人
- 团队管理的一些基本要点
- Wap Push 源码java实现
- weblogic unable to get file lock问题解决方案
- 2020开年,C语言重回巅峰王座!
热门文章
- matlab利用窗改变幅值_Matlab在车辆中的应用 信号处理分析
- centos www服务器文件unable create,Centos Vsftpd 无上传权限 (553 Could not create file)
- Title函数--Matplotlib
- 直播程序源码更简单的搭建方法
- mysql 针对table的查看命令行
- 带你了解Java Agent
- 开源转场库HYBControllerTransitions
- tomcat知识点总结
- QT编译项目错误:转换到coff期间失败文件无效或损坏
- @postconstruct 不执行_【如何分析恶意软件在系统中执行了?】