RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。 IndexRunLoop ...
分类:
其他好文 时间:
2016-06-12 18:26:36
阅读次数:
148
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。 ...
分类:
编程语言 时间:
2016-06-07 08:53:35
阅读次数:
244
1利用栈对象自动释放(可以禁止析构函数就不能产生栈对象了哦 小技巧) 利用栈对象出作用域自动释放的特性构造一个空的智能指针类 2解决智能释放问题,只要这样就不用手工delete类指针了 在智能指针类的析构函数里面delete对象成员去对象里面释放垃圾指针等.. 3解决被智能指针代理的真实对象的函数的 ...
分类:
其他好文 时间:
2016-06-05 23:01:19
阅读次数:
193
概述
我们知道在程序运行过程中要创建大量的对象,和其他高级语言类似,在ObjC中对象时存储在堆中的,系统并不会自动释放堆中的内存(注意基本类型是由系统自己管理的,放在栈上)。如果一个对象创建并使用后没有得到及时释放那么就会占用大量内存。其他高级语言如C#、Java都是通过垃圾回收来(GC)解决这个问题的,但在OjbC中并没有类似的垃圾回收机制,因此它的内存管理就需要由开发人员手动维护。今天将...
分类:
移动开发 时间:
2016-06-02 14:36:58
阅读次数:
237
String能自动释放,在进行内存拷贝时需要进行手动释放。可以直接调用Finalize手工释放 如:TGraphicHideTab 记录中声明的Caption:string 直接内存处理的时候String不会自动处理计数,需要手工处理String。 http://www.cnblogs.com/gl ...
分类:
其他好文 时间:
2016-06-02 06:17:01
阅读次数:
196
RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。 目录 RunLoop ...
分类:
其他好文 时间:
2016-05-31 20:52:36
阅读次数:
240
C#基础之内存分配 1.创建一个对象 一个对象的创建过程主要分为内存分配和初始化两个环节。在.NET中CLR管理的内存区域主要有三部分:栈、GC堆、LOH堆,栈主要用来分配值类型数据。它的管理是有系统控制的,而不是像GC堆那样是由GC控制的。当线程执行完值类型实例所在方法后,这块空间将会被自动释放, ...
析构过程 析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用。析构器用关键字deinit来标示,类似于构造器要用init来标示。 原理 Swift 会自动释放不再需要的实例以释放资源,Swift 通过自动引用计数(ARC)处理实例的内存管理。通常当你的实例被释放时不需要手动地去清理。 ...
分类:
编程语言 时间:
2016-05-27 23:38:41
阅读次数:
157
RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。...
分类:
其他好文 时间:
2016-05-27 11:41:12
阅读次数:
164
1. 垃圾回收的意义
在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放...
分类:
编程语言 时间:
2016-05-13 14:46:37
阅读次数:
216