由《大话设计模式 - 工厂模式》的OC和部分Swift的语言转义 工厂模式 继上一篇《代理模式》 工厂模式, 定义一个用于创建对象的接口, 让子类决定实例化哪一个类。 工厂方...
由《大话设计模式 - 工厂模式》的OC和部分Swift的语言转义 工厂模式 继上一篇《代理模式》 工厂模式, 定义一个用于创建对象的接口, 让子类决定实例化哪一个类。 工厂方...
由《大话设计模式 - 策略模式》的OC和部分Swift的语言转义 策略模式 继上一篇《简单工厂模式》 策略模式,定义了算法家族,分别封装起来, 让他们之间可以相互替换, 此模...
1、什么是isa指针 概念: Every object has an isa instance variable that identifies the object's c...
上篇文章讲到了什么是isa指针以及KVO的底层实现,如果对KVO和isa指针不熟悉的需要先看看这篇文章。本篇文章主要是实现含有Block的KVO方法。先上代码 1、 KVO的...
在iOS之初: 我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如:注意:(这个是以前的用法)@inte...
摘要:这篇文章首先介绍runtime原理,包括类,超类,元类,super_class,isa,对象,方法,SEL,IMP等概念,同时分别介绍与这些概念有关的API。接着介绍方...
对于不同场景,系统提供的有不同的内存管理方案,大致有如下三种: TaggedPointer (对于一些小对象,比如说NSNumber等采用此种方案) NONPOINTER_I...
+load 方法是类级方法,对比alloc等对象级方法,在 rumtime 中是个特殊的存在: 特点1:+load 由 rumtime 自动调用 与initialize不同,...
has updated for iOS 13 项目中的页面(webview)分成两种,一种是比较简单的,对于这种页面,浏览完毕后点返回,就是真的返回,退到上一层;另一种是复杂...
转自: iOS程序中的内存分配 栈区堆区全局区在计算机系统中,运行的应用程序的数据都是保存在内存中的,不同类型的数据,保存的内存区域不同。 一、内存分区 1 栈区(stack...
iOS Method Swizzle 代码 平常我们用的方法都是method_exchangeImplementations,其实这种用法是错误的,我们正确的替换方法应该上面...
ObjC的runtime只能在Mac OS下才能编译, 代码都是在x86_64架构下运行,iOS上是在arm64, armv7s, armv7架构下运行 遇到的问题 最近在做...