dyld 和链接 代码从写完到编译到运行之间发生了什么?我们的程序是如何在设备上执行的?为什么我们代码中没有的库函数也能执行?在工作中我们可能常常会疑惑这样的问题,下面我们来探究一下这些问题。在阅读本文之前,需要充分了解进程的概念:并发编程之进程。 一、编译编译是一个很复杂的过程,往往也是检验我们代码正确与否的第一步,编译器会帮助我们做很多很多很多事,比如,语法分析、词法分析、类型检查、预处理、生成中间代码等等,本 2018-07-01
isa指针中隐藏的黑魔法 前言在 objc 的对象系统中,isa 指针是一个非常重要的角色,每个对象都有一个 isa 指针,它的含义用中文可以解释为是一个,例如: 1id xiaoming = [Person new]; 可以解释为,xiaoming is a person(小明是一个人)。我们知道在 32 位架构下,指针变量的存储空间是 4 字节,在 64 位架构下,指针变量的存储空间是 8 字节,从 iPhone 5 2018-06-26
并发编程之进程 在计算机的世界中,CPU 是唯一的,内存是唯一的,磁盘是唯一的,大部分资源都是共享的,但是正在运行的应用程序不是唯一的,因此,不同的应用程序可能在会在同一时刻使用 CPU、内存、磁盘等等,这样就会造成操作系统对硬件和软件的管理混乱。进程概念的引入很好的解决了这个问题,进程是对正在运行的应用程序的抽象,它使所有的应用程序都以为自己在独占的使用 CPU 和内存,由于这些抽象的存在,操作系统只需要关心如 2018-06-12
深入浅出谈算法 写在前面的话算法无用论和算法重要论一直以来都是程序员界争论不休的话题,至今也没人能给出一个明确的定论。个人认为,解算法或者说刷题的目的不在于我们在工作中使用这个算法,而在于解题的过程能锻炼我们解决问题的思维和扩展思维。这种思维可以给我带来的是:一个复杂的流程可以想到多种解决方法,并且从中选择最优的解法,而不是只有一种解法还是十分垃圾的解法。另外,一个简单的数据结构的使用可能会大大的简化我们代码的时 2018-06-11
从源码分析block的底层实现 作为 iOS 开发者,不管是初级还是高级,都应该知道并且熟练应用 OC 中的 block 语法。大多数开发者都知道 block 会造成循环引用,但是很少有人会关心 block 造成循环引用的原理和如何正确的避免,大多数人遇到 block 就用 weak 引用这种简单粗暴的方式来解决循环引用的问题,这种做法并不可取。下面我将从 block 是什么? block 如何捕获变量? block 循环引用的 2018-05-31
揭秘instancetype 苹果官方会建议我们用 instancetype 类型代替 id 类型作为某个类的初始化方法的返回值。以下内容摘自Adopting Modern Objective-C: Use the instancetype keyword as the return type of methods that return an instance of the class they are called on 2018-04-19
哈希表 前言 哈希表的优势数据结构存在的意义是处理数据,对数据的基本处理无非是增删改查,即插入、删除、查找、修改。对线性表(数组)来说,插入和删除的时间复杂度是O(N),即每次插入和删除都要改变插入位置后面所有元素的个数,从而造成O(N)的时间复杂度,而查找和修改的时间复杂度是O(1),因为可以直接用下标得到那个位置的元素。对链表来说,插入和删除的时间复杂度为O(1),而查找和修改的时间复杂度为O(N), 2018-03-23
关于 iOS 中的 WebView UIWebView 使用方式与普通 View 一样。 使用方式与普通 View 一样。内置一个 UIScrollView。 需要设置 UIWebViewDelegate。delegate 只有四个回调方法:是否开始,load 开始,load 完成,load 失败。 HTML1[webView loadHTMLString:@"<html><body><p 2018-03-10
使用 WKWebView 的一些经验 白屏问题 UIWebView 上当内存占用过大时,App 会 crash;WKWebView 上当内存占用过大时,WebContent process 会 crash,导致白屏。 白屏问题UIWebView 上当内存占用过大时,App 会 crash;WKWebView 上当内存占用过大时,WebContent process 会 crash,导致白屏。此时,wkWebView 的 url 变 2018-03-02
类和元类 Objective-C 是一门基于类的对象系统,每一个对象都是某个类的实例;对象的 isa 指针指向它的类。该类描述对象的一些信息:数据占用的空间,变量的类型和布局等。该类也描述对象的一些行为:对象可以响应的选择器(selector)和对象实现的实例方法。 (注:面向对象的含义,类是一类事物的共有特性的描述,比如:“人”类中的“姓名”,“年龄”等属性,“吃饭”、“喝水”等行为,所有的人都具备,所 2018-02-09