项目情况 AppDelegate三方库初始化较多,-didFinishLaunchingWithOptions:首屏展示慢。 三方库手动导入,文件目录混杂。 MVC架构,Vi...
结构型设计模式 用于处理类或对象的组合 一、桥接模式 - Bridge Pattern 把事物对象和其具体特征分享开来,使它们可以各自独立变化。如圆形、三角形归于抽象的形状之...
背景 更新完系统,发现自己一个mac应用开机自启失败。表现为方法调用返回 false 查询发现macOS 13.0 更新了一个新类 SMAppService[https://...
常用方法响应 -rac_signalForSelector: 使用: 源码 NSObject+RACSelectorSignal RAC 监听方法前后,类结构图
常用KVO宏 RACObserve(<#TARGET#>, <#KEYPATH#>) 使用: 源码 宏定义 NSObject (RACPropertySubscribing)...
2021-08-05更新
1、标明了测试代码的ARC、MRC环境
2、添加了ARC下NSStackBlock的测试代码
iOS - block一、简述block 分类: NSGlobalBlock、NSMallocBlock和NSstackBlock,通过内存的分部部局来分类。block就是保存一段代码块,想用的时...
打开 Malloc Stack LoggingEdit Scheme Run -> Diagnostics -> Memory Management选择 Malloc Sta...
官方介绍[https://developer.apple.com/widgets/] 介绍 Widget可以将应用中的关键内容显示在iPhone、iPad和Mac上的醒目的位...
id是指向一个类的实例对象的指针。 类的底层定义 对象的底层定义,类继承自objc_object,所以类也是对象,类对象。ISA() assumes this is NOT ...
Tagged Pointer 从64位系统开始,iOS引入了TaggedPointer技术,用于优化小对象(NSNumber、NSData)的存储。 https://deve...
Swift的可选类型,用于处理值缺失的情况。可选表示"那儿有一个值,并且它等于x"或者"那儿没有值"。Swift语言定义后缀?作为命名类型Opetional的缩写,换句话说,...
避免重复,DRY(Don't repeat yourself):如果你准备在不同地方写同一段代码,那么只写一个方法。如果不止一次硬编码某个值,那么将其声明成public fi...
什么是多线程? 同一时间内单核的CPU只能执行一个线程,多线程是CPU快速的在多个线程之前进行切换(调度),造成了多个线程同时执行的假象。如果是多核CPU就真的可以同时处理多...
一、类别中添加属性 新建一个Person类, 添加一个name属性。 建一个Person类的类别stature,添加一个height属性。 然后在调用的时候发现 setHei...
消息发送 第二句中,mstr称为消息接收者,appendString:称为选择器,也就是我们常用的selector,selector和参数共同构成了消息,所以第二句话可以理解...
Runtime是一套C语言的API,封装了很多动态性相关的函数,平时编写的OC代码,底层都是转换成了Runtime API进行调用。Runtime主要是用于在程序运行过程中,...