美文网首页
内存管理

内存管理

作者: 向日葵_wwx | 来源:发表于2016-01-05 22:09 被阅读163次

内存管理:
一、属性的内存管理方式:其实就是手动生成set和get方法:必须了解set和get方法中的实现原理

二、初始化的内存管理方式
_name = name不能这样写,只能写成self.name,要不会形成野指针
三、便利构造器的内存管理方式
return [stu autorelease];//便利构造器的内存管理只在返回值这块延迟释放就行,所以在使用便利构造器创建对象时就不需要释放了,因为在类的内部调用你一次便利构造器方法就会走释放这块

pragma mark 属性的三大特性

/**
 *第一类:读写控制
 readonly:只生成get 方法
 reawrite:生成get和set方法
 set:用来指定生成的set方法名字
 get:用来指定生成的get方法名字
 *
 */

手动生成set和get方法必须实现这个方法,否则无法实行 @synthesize name = _name,age = _age,sex= _sex, score = _score,hobby=_hobby;

/**
 *第二类:原子性控制
 atomic:原子安全设置,在多线程环境中,一次只能由一条线程访问,默认是安全性设置。但是这种设置会降低程序的性能,一般不考虑
 nonatomic:非原子安全设置:set、get方法中,并不像atomic一样添加线程安全控制代码,而是普通的set、get方法。这种设置可以大大提高程序的性能,但是在多线程环境中,需要考虑线程安全问题。
*
 */

/**
 *第三类:语义设置
 assign :使用 assign 声明的属性对应的实例变量存储器方法的实现,是在方法里直接赋值、取值、并没有操作内存的引用计数。一般用来将基本数据类型的属性特征声明为 assign ,使用assign修饰的对象不用进行内存管理。所以不必释放,因为assign类型是存在栈区的,只有堆区的东西才需要内存管理
 retain:使用 retain 声明的属性对应的实例变量存储器方法的实现,内部会做内存优化处理,修改对象的引用计数
 copy:使用 copy 声明的属性对应的实例变量存储器方法的实现,内部也会做内存优化处理,将对象拷贝一份,然后修改新对象的引用计数(区分深拷贝和浅拷贝)

 *一般情况下,将OC中的对象声明为retain或copy特征
     assign是修饰基本类型
 */

assign和weak的区别
weak释放完之后会把对象置为nil,

相关文章

  • iOS内存管理详解

    目录 block内存管理 autorelease内存管理 weak对象内存管理 NSString内存管理 new、...

  • 第10章 内存管理和文件操作

    1 内存管理 1.1 内存管理基础 标准内存管理函数堆管理函数虚拟内存管理函数内存映射文件函数 GlobalMem...

  • 操作系统之内存管理

    内存管理 包括内存管理和虚拟内存管理 内存管理包括内存管理概念、交换与覆盖、连续分配管理方式和非连续分配管理方式(...

  • JavaScript —— 内存管理及垃圾回收

    目录 JavaScript内存管理内存为什么需要管理?内存管理概念JavaScript中的内存管理JavaScri...

  • OC - OC的内存管理机制

    导读 一、为什么要进行内存管理 二、内存管理机制 三、内存管理原则 四、MRC手动内存管理 五、ARC自动内存管理...

  • 3. 内存管理

    内存管理 内存管理包含: 物理内存管理; 虚拟内存管理; 两者的映射 除了内存管理模块, 其他都使用虚拟地址(包括...

  • Go语言——内存管理

    Go语言——内存管理 参考: 图解 TCMalloc Golang 内存管理 Go 内存管理 问题 内存碎片:避免...

  • jvm 基础第一节: jvm数据区

    程序内存管理分为手动内存管理和自动内存管理, 而java属于自动内存管理,因此jvm的职能之一就是程序内存管理 j...

  • 内存管理

    内存管理的重要性。 不进行内存管理和错误的内存管理会造成以下问题。 内存泄露 悬挂指针 OC内存模型 内存管理是通...

  • 11-AutoreleasePool实现原理上

    我们都知道iOS的内存管理分为手动内存管理(MRC)和自动内存管理(ARC),但是不管是手动内存管理还是自动内存管...

网友评论

      本文标题:内存管理

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