iOS的管理机制
来源:互联网 发布:vmware player linux 编辑:程序博客网 时间:2024/05/17 22:08
iOS的管理机制下
最近很想研究研究一些基石类的概念, 这样可以稳定一下自己的地基, 在平时避免一些bug, 优化一下代码. 所以我就选择了iOS的内存机制.
>
- 内存的五大区域
(1). 栈区: 栈区是由系统自动分配的一块内存区域, 他可以存放一些函数的参数值, 局部变量的值, 和一些基础类型的值(int, float等). 当你所申请的空间大于栈中剩余的空间时, 会出现栈溢出, 导致程序崩溃.
(2). 堆区: 堆区我们接触的就很多了, 它是由我们程序员自己动手分配的一块内存区域, 在堆区里有一个记录空闲内存区域的链表, 当你向系统申请一块内存区域时, 系统会自动遍历这个链表, 找到一块大于申请的空间. 然后将节点从链表中删除, 并将申请的相关信息存入该节点的首地址中, 将该节点的空间分配给程序. 同时, 当你释放掉申请的空间时, 系统会自动回收该内存, 重新添加到链表中.
(3). 全局(静态)区: 存放全局变量和静态变量. 当程序结束时系统自动释放.
(4). 常量区: 存放常量, 当程序结束后系统会自动释放.
(5). 代码区: 存放函数体的二进制文件.>
- 关于retain, strong, copy, weak, assign, release, autorelease, alloc, dealloc.
(1) 如果对象使用了retain, copy, alloc(引用计数加一), 那么就会相应的release或autorelease(引用计数减一)
(2) arc下的strong和mrc下的retain的作用相类似, arc下的weak和mrc下的assign的作用相类似, 区别是weak指向的内存释放后自动置为空, 一面造成野指针.
(3) elease和autorelease的区别: release和autorelease的区别就在于引用计数减一的触发时间, release是在调用时对象的引用计数就会减一, 而autorelease是在出对应的自动释放池对象的引用计数才会减一.
(4) readwrite(默认): 表示既有getter方法,也有setter方法。readonly:表示只有getter方法,没有setter方法。nonatomic:不考虑线程安全。atomic(默认):线程操作安全
(5) retain和copy的区别: retain是将对象的引用计数加一, 然后返回, copy是返回一个引用计数为一且不可变的对象, . 下面用代码来验证.
- (void)test{ // 对retain的实验 NSMutableArray *MarrayOfRetain = [NSMutableArray array]; NSLog(@"MarrayOfRetain = %@ address = %p", [MarrayOfRetain class], MarrayOfRetain); NSMutableArray *arrOfRetain = [MarrayOfRetain retain]; NSLog(@"retain = %@ address = %p", [arrOfRetain class], arrOfRetain); // 对copy的实验 NSMutableArray *MarrayOfCopy = [NSMutableArray array]; NSLog(@"MarrayOfCopy = %@ address = %p", [MarrayOfCopy class], MarrayOfCopy); NSMutableArray *arrOfCopy = [MarrayOfCopy copy]; NSLog(@"copy = %@ address = %p", [arrOfCopy class], arrOfCopy);}
1 0
- iOS的管理机制
- iOS的内存管理机制总结
- iOS内存管理机制及属性的使用
- iOS内存管理机制
- ios内存管理机制转载
- ios中的内存管理机制
- 【iOS开发】 内存管理机制
- ios内存管理机制
- iOS - 内存管理机制
- iOS中的内存管理机制
- ios内存管理机制
- IOS内存管理机制
- ios内存管理机制
- IOS内存管理机制
- ios内存管理机制
- ios框架内存管理机制
- iOS 内存管理机制
- iOS内存管理机制
- aspx+mssql后台登陆注入拿webshell
- 学习Android推送功能笔记(1)
- JAVA多线程 总结
- 浏览器兼容性解决方法
- 黑马程序员——java学习日记四
- iOS的管理机制
- 了解Android中的接口回调机制
- 基于servlet的方式实现文件上传
- iOS学习之sqlite的创建数据库,表,插入查看数据
- python多线程
- goaccess-nginx日志分析工具简介
- Android http网址链接图片的处理及显示
- 短信验证
- 【集合类型的并发】Collections.synchronizedList 的使用