autorelease 自动释放池 autorelease是一种支持引用计数的内存管理方式,只要给对象发送一条autorelease消息,会将对象放到一个自动释放池中,当自动释放池被销毁时,会对池子里面的所有对象做一次release操作 优点:不用再关心对象释放的时间,不用再关心什么时候调用rele ...
分类:
其他好文 时间:
2016-05-01 08:43:37
阅读次数:
162
1. 内存管理
堆和栈
栈 (操作系统) : 由操作系统自动分配释放, 存放函数的参数值(形参),局部变量的值等. 其操作方式类似于数据结构中的栈 (先进后出)
堆 (操作系统) : 一般由程序员分配释放, 若程序员不释放, 程序结束时可能由OS回收, 分配方式类似于链表
只要是alloc init创造的, 都放在堆里
OC对象存放在堆里,堆里的数据系统不会自动释放, 需要手动释放
非OC对象一...
分类:
其他好文 时间:
2016-04-29 16:23:36
阅读次数:
112
这一章节我们来讨论一下下面的情况:当异常出现时,线程自动释放锁...
分类:
编程语言 时间:
2016-04-29 15:56:12
阅读次数:
232
RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。
目录
RunLoop 的概念
RunLoop 与线程的关系
RunLoop 对...
分类:
其他好文 时间:
2016-04-29 15:40:04
阅读次数:
228
RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在
iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。
目录
RunLoop 的概念
RunLoop 与线程的关系
RunLoop...
分类:
其他好文 时间:
2016-04-29 15:02:09
阅读次数:
255
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。 ...
分类:
编程语言 时间:
2016-04-28 00:08:51
阅读次数:
280
@autoreleasepool { stu * s=[[[stu allow]init] autorelease];//可以不用release 自动释放会自动销毁 stu * s=[[[stu allow]init] autorelease]autorelease];错误不可以写两次 野指针错误 ...
分类:
其他好文 时间:
2016-04-24 17:02:04
阅读次数:
132
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。
堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器...
分类:
编程语言 时间:
2016-04-22 18:57:43
阅读次数:
269
RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。 目录 RunLoop ...
分类:
其他好文 时间:
2016-04-22 06:55:29
阅读次数:
193
1.垃圾回收的意义在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用..
分类:
编程语言 时间:
2016-04-21 18:49:23
阅读次数:
283