RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。
目录
RunLoop 的概念
RunLoop 与线程的关系
RunLoop 对...
分类:
其他好文 时间:
2016-04-08 10:26:02
阅读次数:
313
Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处。对于iOS程序员来说,内存管理是入门的必修课。引用计数、自动释放等概念,都是与C语言完全不同的。搞明白这些,代码才有可能不 crash。然而就是这么牛逼的内存管理,着实让我这个从 C 转过来的老程序员头疼了一段时间。[C++ 程序员的迷惑...
分类:
移动开发 时间:
2016-03-29 10:40:41
阅读次数:
271
Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处。 对于iOS程序员来说,内存管理是入门的必修课。引用计数、自动释放等概念,都是与C语言完全不同的。搞明白这些,代码才有可能不 crash ...
分类:
移动开发 时间:
2016-03-28 18:44:53
阅读次数:
271
线程安全、数据同步之synchronized与Lock。当synchronized锁定的方法或者代码块发生异常的时候,它会在自动释放锁;但是如果被它锁定的资源被线程竞争激烈的时候,它的表现就没那么好了。当Lock锁定的方法或者代码块发生异常的时候,它不会自动释放锁;它拥有与synchronized相同的并发性和内存语义,但是添加了类似锁投票、定时锁等候和可中断锁等候的一些特性。此外,它还提供了在激烈争用情况下...
分类:
编程语言 时间:
2016-03-27 18:07:37
阅读次数:
178
1栈 -- 由编译器自动分配释放。 2堆 -- 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。 3全局区(静态存储区)-- 全局变量和静态变量的存储是放在一块区域 ,程序退出后自动释放 。全局区又分为全局初始化区和全局未初始化区。初始化的全局变量和静态变量存放在全局初始化区,未初始
分类:
移动开发 时间:
2016-03-20 17:48:45
阅读次数:
201
一.准备知识 Java中变量分为基本数据类型和引用类型,前者分配在栈内,出了作用域就自动释放,后者分配在堆内或者常量池(比如字符串常量和基本数据类型常量),需要new出来。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。堆内存用于存放由new创建的对象和数组。数组和对象在没
分类:
编程语言 时间:
2016-03-19 12:49:50
阅读次数:
234
Java把内存分成两种: 栈内存 : 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。 堆内存 : 堆内存
分类:
编程语言 时间:
2016-03-13 22:27:38
阅读次数:
202
1. C++ 内存使用分为堆、栈:栈是相对静态的,系统自动释放,一般是固定大小,固定位置的,如 int a, double d,int[100]等,堆是相对动态的,通常有new,malloc 行为产生,系统不会自动释放堆的内存。Delete 会触发析构函数。 例如: void Test() { In
分类:
编程语言 时间:
2016-03-11 08:54:09
阅读次数:
119