iOS 栈和堆总结

转载自 :
大神博客
iOS程序中的内存分配
iOS 堆和栈的区别
block与property
iOS中__block 关键字的底层实现原理
iOS适配iPhoneX
appearance主题
适配iOS11--contentInsetAdjustmentBehavior
iOS 对属性变量setter和getter方法的理解
iOS 宏(define)与常量(const)的正确使用
layoutSubviews

启动页加动画
LaunchScreen与LaunchImage
获取APP的Launch Image

masonry编写约束,默认的priority是1000
Cell自适应高度
计算动态cell的高度并缓存
根据内容动态计算高度的UITableViewCell

其实在刚接触iOS的时候,栈和堆这些基础理论是理解的很深刻的,但是长时间不关注这些,也就遗忘了,现在想再总结下。

  • 栈区

平常我们写代码都是在栈里面写的。栈区由编译器自动分配并释放,存放函数的参数值局、部变量的值等。其操作方式类似于数据结构中的栈。

*堆区

对象存放在堆区,即 alloc之后的对象,是存在堆区的。
但由于iOS ARC的变动,我们不太需要去释放和管理堆区的
内存的分配和释放。

比如所现在创建一个Person对象,在栈区我们会写:

Person *p = [[Person alloc] init];

注意 : 此时的Person对象是存储在堆区的,比如说Person对象在堆区的地址为xxxxx, 那么 p 指向这个地址,p只是对Person对象的一个引用,在程序执行过程中,运行到p ,此时p指向的堆内存地址要进栈执行,完成执行后,栈区释放整个栈区的资源,由于ARC的机制,Person对象也将会在调用之后自动释放。其实我感觉 OC的Java的差不多一样。

栈区:先进后出
堆区:先进先出
PrefixHeader.pch 设置路径

$(SRCROOT)/工程名/PrefixHeader.pch

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,989评论 8 265
  • OC语言基础 1.类与对象 类方法 OC的类方法只有2种:静态方法和实例方法两种 在OC中,只要方法声明在@int...
    奇异果好补阅读 9,818评论 0 11
  • 11.看下面的程序,第一个NSLog会输出什么?这时str的retainCount是多少?第二个和第三个呢? 为什...
    AlanGe阅读 4,121评论 1 4
  • 我们在想哭时假装开心,在黑夜里等待天亮。我们都害怕一个人离开,于是想方设法取悦对方。有时你准备了一箩筐笑话,也取悦...
    谁懂我的孤单阅读 1,387评论 0 0
  • 五,逃逸 有人说,岁月如何,这句话怎么理解?朱牧认为,所谓岁月如歌,就是在某个具体的时间,某种具体...
    梦里呜咽的小河阅读 2,755评论 0 0

友情链接更多精彩内容