RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。 目录 RunLoop
分类:
其他好文 时间:
2016-02-29 16:24:05
阅读次数:
246
自动释放池是一种半自动的内存管理方式autorealease方法:-(instancetype)autorelease此方法将对象放到自动释放池中,当自动释放池销毁时,池中的所有对象都会随之销毁。常见的使用方式:Person*p=[[[Perosnalloc]init]autorelease];使用@autoreleasepool关键字来使用自动释放..
分类:
其他好文 时间:
2016-02-28 17:08:10
阅读次数:
143
自动释放池以栈的形式实现:当你创建一个新的自动释放池时,它将被添加到栈顶。接收autorelease消息的对象将被放入到最顶端的自动释放池中。如 果将一个对象放入一个自动释放池中,然后创建一个新的自动释放池再销毁该新建的自动释放池,则这个自动释放对象仍将存在,因为容纳该对象的自动释放池仍然 存在。
分类:
移动开发 时间:
2016-02-26 23:29:01
阅读次数:
211
Objective-C 的内存管理方式有引用计数机制,垃圾回收机制,自动释放池。有alloc,就有释放。iOS应?程序出现Crash(闪退),90%的原因是因为内存问 题。在?个拥有数?个甚?是上百个类的?程?,查找内存问 题极其困难,学会内存管理,能帮我们减少出错的?率。内存问题体现在两个??:内
分类:
移动开发 时间:
2016-02-22 23:37:49
阅读次数:
471
假如使用alloc、new开头或者包含copy函数的方法来创建一个对象,你就拥有了这个对象的所有权。(假如新对象的retain计数为1,并且不在自动释放池里,那么,你就有义务在不用这个对象的时候释放它)。传递对象所有权一些常见的方法是alloc(也经常会跟着init方法),copy和mutableC
分类:
其他好文 时间:
2016-02-16 10:00:12
阅读次数:
169
引用计数 引用计数是c/c++项目中一种古老的内存管理方式。当我8年前在研究一款名叫TCPMP的开源项目的时候,引用计数就已经有了。 iOS SDK把这项计数封装到了NSAutoreleasePool中。所以我们也在Cocos2d-x中克隆了一套CCAutoreleasePool。两者的用法基本上一
分类:
其他好文 时间:
2016-02-03 15:26:09
阅读次数:
173
objective-c的内存管理划分是基本类型存储在栈内(栈内被占用的内存由系统自动释放),对象存储在堆内。由于objc没有垃圾回收机制(GC) 不能自动释放堆中的内存,需要程序员自己手动释放,否则会导致内存溢出。objc的内存管理机制主要有:1、引用计数器 2、属性参数 3、自动释放池。 1、引用
分类:
移动开发 时间:
2016-02-01 14:39:44
阅读次数:
146
RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。 RunLoop 的...
分类:
其他好文 时间:
2016-01-14 16:10:21
阅读次数:
259
1.autorelease 基本用法对象执行autorelease方法时会将对象添加到自动释放池中当自动释放池销毁时自动释放池中所有对象作release操作对象执行autorelease方法后自身引用计数器不会改变,而且会返回对象本身2.autorelease 的优点autorelease实际上只是...
分类:
移动开发 时间:
2016-01-13 19:54:32
阅读次数:
190
OC中数组对象在是如何处理对象元素的引用计数问题的,同时介绍一下自动释放池的相关概念一、数组对象是如何处理对象元素的引用计数问题[objc]view plaincopy 1. // 2. //main.m 3. //26_NSArrayMemeryManager 4. // 5. //Create....
分类:
其他好文 时间:
2016-01-06 15:41:51
阅读次数:
207