美文网首页
iOS 栈和堆总结

iOS 栈和堆总结

作者: 我想走走 | 来源:发表于2018-05-17 11:30 被阅读94次

    转载自 :
    大神博客
    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

    相关文章

      网友评论

          本文标题:iOS 栈和堆总结

          本文链接:https://www.haomeiwen.com/subject/pxxbdftx.html