文档章节

对Objective-C内存管理策略的理解

nswish
 nswish
发布于 2014/08/06 14:39
字数 332
阅读 39
收藏 2

Objective-C的内存管理策略是基于“拥有关系”的。凡是被“拥有”的对象,不会被回收。对内存的管理,实际上就是对“拥有”关系的管理。

  1. 通过开头名称为”alloc”,”new”,”copy”,”mutableCopy”的方法创建的对象,你对其有“拥有”关系。
  2. 对于你想保持的对象,通过retain取得其“拥有”关系。
  3. 你需要负责在合适的时机,释放你“拥有”的对象。
  4. 你不能释放你没有“拥有”的对象。

总的来说就是,是你的(alloc, new, copy, mutableCopy, retain)你释放(release, autorelease),不是你的不要释放。


补充:

  1. 父元素应该强引用子元素,而子元素应该弱引用父元素
  2. 从容器(array, set, dictionary)中获取元素后,在容器移除这个元素前,应做retain。因为容器移除元素时,发送给元素的消息是release 而不是 autorelease。
  3. 从父元素中获取子元素后,在父元素被释放前,最好做一下retain。因为父元素对子元素的释放,很有可能是release而不是autorelease。

© 著作权归作者所有

nswish

nswish

粉丝 12
博文 11
码字总数 3222
作品 1
高级程序员
私信 提问
理解 iOS 和 macOS 的内存管理

在 iOS 和 macOS 应用的开发中,无论是使用 Objective-C 还是使用 swift 都是通过引用计数策略来进行内存管理的,但是在日常开发中80%(这里,我瞎说的,8020 原则嘛)以上的情况,我们不需要...

Mr_zebra
2018/11/20
16
0
慎用公共变量

谨~~慎 前言 在开发过程中,避免不了会使用公共变量,记录共享对象状态、数据最简单的方式就是创建创建公共变量; 当业务逻辑变多,还采用这种思想就会变得危险,代码逻辑变得不清晰,慢慢就...

Jack_lin
2018/01/29
0
0
iOS开发CoreGraphics核心图形框架之一——CGPath的应用

iOS开发CoreGraphics核心图形框架之一——CGPath的应用 一、引言 CoreGraphics核心图形框架相较于UIKit框架更加偏于底层。在Objective-C工程中,CoreGraphics其中方法都是采用C语言风格进行编...

珲少
2016/10/11
17.4K
0
iOS 编写高质量Objective-C代码(二)

《编写高质量OC代码》已经顺利完成一二三四篇! 附上链接: iOS 编写高质量Objective-C代码(一) iOS 编写高质量Objective-C代码(二) iOS 编写高质量Objective-C代码(三) iOS 编写高质量...

MrLiuQ
2018/08/13
0
0
学Objective-C后如何进行IOS软件开发呢

这两天也开始学习了objective-c, 因为自己有C基础(应该说还算扎实)同时有一点java经验. objective-c虽然是C的衍生但感觉还是差别很大. 通过这两天对xcode4.4.1的初步了解后发现其界面开发能力...

fcsong000833
2013/01/24
375
1

没有更多内容

加载失败,请刷新页面

加载更多

灵光一闪来个科普贴:Linux文件系统

在计算机系统中,各种需要保存的信息都是以文件的形式存在的。文件管理是对系统信息资源的管理,是操作系统的一项重要功能。 1.文件与文件系统: 1.1文件: 文件是具有名字的一组相关信息的有...

Linux就该这么学
28分钟前
4
0
ExtJS 4.2 评分组件

本文转载于:专业的前端网站➸ExtJS 4.2 评分组件 上一文章是扩展ExtJS自带的Date组件。在这里将创建一个评分组件。 目录 1. 介绍 2. 示例 3. 资源下载 1. 介绍 代码参考的是 Sencha Touch 2...

前端老手
31分钟前
4
0
如何为视频添加封面?

一个好的视频封面可以吸引观众的眼球,从而起到事半功倍的宣传效果,但是很多小伙伴并不知道怎么给视频添加封面。下面分享一个制作封面否方法,操作起来也比较简单的,有兴趣的小伙伴请接着往...

白米稀饭2019
41分钟前
4
0
如何使用soapUI模拟webservice客户端发送请求

参考资料 https://jingyan.baidu.com/article/cbcede0712849a02f40b4d88.html 左边是请求参数,可以自己填写!按着那个绿色三角箭头可以模拟发送请求,右边是返回的报文 soapui如何发送xml格...

故久呵呵
今天
6
0
Java Security 介绍

1.介绍 Java平台设计的重点是安全性。在其核心,java语言本身是类型安全的并且提供了垃圾自动回收,这使其增加了应用程序代码的健壮性。安全的类加载以及验证机制确保了只有合法的代码才能够...

lixiaobao
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部