Bloodline's Blog Notes and thoughts from Bloodline

响应式编程原理及KVO简单实现

        前言 在响应式编程中,不需要考虑调用顺序,只需要知道考虑结果,类似于蝴蝶效应,产生一个事件,会影响很多东西,这些事件像流一样的传播出去,然后影响结果。借用面向对象的一句话,万物皆是流。 响应式编程其实并不复杂,经常用的KVO便是很典型的应用。 KVO实现原理 KVO,即key-value...

链式编程原理及简单实现

        前言 一直在用Masonry,对其链式编程很敢兴趣。于是稍微看了下下其代码的实现。个人理解Masonry的优势主要在于:**能够将视图的约束代码聚集起来,方便代码的阅读与修改**。 链式编程是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,以增强代码的可读性。核心思想:方法的返...

iOS的Block的内存分配

        前言 本来想整理下Block内存管理的内容,发现这个坑挖大了。 Block的分类 Block 其实也是一个对象,并且在大多数情况下,Block 是分配在栈上面的,只有当 Block 被定义为全局变量或Block 块中没有引用任何 automatic 变量时,Block 才分配在全局数据段...

iOS内存管理机制

        前言 最近重温了一遍C语言的内存机制,对内存四区模型的理解又稍微深刻了那么一点。回过头来再看iOS的内存管理,其实是有想通之处的。想深入理解iOS的内存管理机制,就得先了解C的内存机制。 C语言内存 内存四区模型 在程序执行之前的过程大概是: 操作系统把物理硬盘代码load到内...

Objective-C的runtime——Method Swizzling

        Method Swizzling是改变一个selector的实际实现的技术。通过这一技术,我们可以在运行时通过修改类的分发表中selector对应的函数,来修改方法的实现。 简单使用 给NSArray加一个my_firstObject方法: @interface NSArray (Tra...

Objective-C的runtime应用2

        字典转模型 Student.h #import <Foundation/Foundation.h> @interface Student : NSObject @property (nonatomic, copy) NSString *name; @property (n...

Objective-C的runtime——方法与消息

        基础数据类型 SEL SEL又叫选择器,是表示一个方法的selector的指针,其定义如下: typedef struct objc_selector *SEL; objc_selector结构体的详细定义没有在<objc/runtime.h>头文件中找到。方法的sele...

Objective-C的runtime应用

        类与对象操作函数 类相关操作函数 runtime提供的操作类的方法主要就是针对这个结构体中的各个字段的。下面我们分别介绍这一些的函数。并在最后以实例来演示这些函数的具体用法。 类名(name) 类名操作的函数主要有: // 获取类的类名 const char * class_getN...

Objective-C的runtime——成员变量与属性的处理

        类型编码(Type Encoding) 作为对Runtime的补充,编译器将每个方法的返回值和参数类型编码为一个字符串,并将其与方法的selector关联在一起。这种编码方案在其它情况下也是非常有用的,因此我们可以使用@encode编译器指令来获取它。当给定一个类型时,@encode返回这个...

Objective-C的runtime原理

        前言 runtime:指一个程序在运行(或者在被执行)的状态。也就是说,当你打开一个程序使它在电脑上运行的时候,那个程序就是处于运行时刻。在一些编程语言中,把某些可以重用的程序或者实例打包或者重建成为运行库。这些实例可以在它们运行的时候被连接或者被任何程序调用。 Objective-C中ru...