美文网首页
OC-内存管理的初步认识

OC-内存管理的初步认识

作者: huangxiongbiao | 来源:发表于2017-05-13 12:39 被阅读8次

一、内存管理黄金法则:

The basic rule to apple is everything thatincreases the reference counter with alloc,[mutable]copy[WithZone:] or retainis in charge of the corresponding [auto]release.

如果一个对象使用了alloc,[mutable] copy,retain,new那么你必须使用相应的release或autonrelease

二、对象的内存生命

生成对象并持有----alloc,new,copy,mutablecopy
持有对象-------retain
释放对象-------release
废弃对象-------dealloc

从对象的生成持有释放,当饮用计数为0的时候废弃。

1、自己生成对象并持有
  • alloc
  • new
  • copy
  • mutableCopy

copy方法生成不可变更的对象
mutableCopy生成可变的对象

对于NSString的内存管理比较特殊参考 http://blog.csdn.net/Lotheve/article/details/52035477

2、release和autorelease

release直接释放对象引用计数减1
autorelease会将对象注册自动释放池内,pool结束的时候调用release
实现原理:[autorelease addObject:o];pool drain的时候release

3、arc中几个关键字的区别

weak和assign的区别
http://www.jianshu.com/p/a8a43ae15dcd
__weak如何实现对象值自动设置为nil的

  • strong 强引用 计数加1
  • weak 弱饮用 计数不变 对象释放的时候会设置为nil
  • assign 普通类型的赋值,用于对象会造成野指针

相关文章

  • OC-内存管理的初步认识

    一、内存管理黄金法则: The basic rule to apple is everything thatinc...

  • OC-内存管理(一)-定时器NSTimer NSProxy消息转

    OC-内存管理(一)-定时器NSTimer NSProxy消息转发 NSTimer NSTimer会对target...

  • OC-内存管理

    直接看看下面的面试题 介绍一下内存的几大区域 使用 CDDisplayLink、NSTimer 有什么注意点 讲一...

  • OC-堆栈、内存管理

    MRC:手动内存管理 ARC:默认是ARC:automatic Reference Count,自动引用计数器 P...

  • OC-内存管理语义

    assign:'设置方法'只会针对「纯量类型」如CGFloat、NSInteger等 strong:表明「拥有关系...

  • JVM 堆内存初步认识

    堆内存,是JVM运行时一块最大的内存,几乎所有的对象都分配在堆内存中。为什么说是几乎,因为有的对象会分配到栈上,例...

  • 12、OC-初识内存管理

    虽然现在我们做开发走到使用ARC 自动引用计数,但是更好地去了解内存管理还是非常有必要的。  手机的内存是有限的,...

  • OC-内存管理autorelease原理

    先提几个问题,然后带着问题一起来学习autorelease的原理 加入autorelease pool的对象释放时...

  • OC-内存管理Tagged Pointer

    1. 简介 Tagged Pointer是苹果在64bit设备提出的一种存储小对象的技术,它具有以下特点 Tagg...

  • GCD相关概念总结(一)

    花了一天时间,看了Objective-C高级编程(iOS与OS X多线程和内存管理),对GCD有了初步的认识,大致...

网友评论

      本文标题:OC-内存管理的初步认识

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