- 博客(23)
- 收藏
- 关注
原创 iOS - 聊聊 autorelease 和 @autoreleasepool
前言: 作为 iOS 开发者,在面试过程中经常会碰到这样一个问题:在 ARC 环境下,autorelease 对象在什么时候释放?这也是 iOS 内存管理的重要知识点,本文将针对这道面试题,讲解 autorelease 和 @autoreleasepool。苹果在 iOS5 中引入了ARC(Automatic Reference Counting)自动引用计数,通过LLVM编译器和Runt...
2020-03-17 01:05:23
469
原创 iOS - 关于 KVO 的一些总结
1. 什么是 KVOKVO的全称是Key-Value Observing,俗称“键值观察/监听”,是苹果提供的一套事件通知机制,允许一个对象观察/监听另一个对象指定属性值的改变。当被观察对象属性值发生改变时,会触发KVO的监听方法来通知观察者。KVO是在MVC应用程序中的各层之间进行通信的一种特别有用的技术。KVO和NSNotificationCenter都是iOS中观察者模式的一种实现。...
2020-03-05 21:52:13
501
原创 iOS - 关于 KVC 的一些总结
1. 什么是 KVCKVC的全称是Key-Value Coding(键值编码),是由NSKeyValueCoding非正式协议启用的一种机制,对象采用这种机制来提供对其属性的间接访问,可以通过字符串来访问一个对象的成员变量或其关联的存取方法(getter or setter)。通常,我们可以直接通过存取方法或变量名来访问对象的属性。我们也可以使用KVC间接访问对象的属性,并且KVC还可以访...
2020-03-05 21:48:05
564
原创 iOS - 多线程(四):NSOperation
iOS - 多线程 系列文章iOS - 多线程(一):初识iOS - 多线程(二):pthread、NSThreadiOS - 多线程(三):GCDiOS - 多线程(四):NSOperationiOS - 多线程(五):线程同步方案1. NSOperation 初识1.1 NSOperation 介绍NSOperation 是 OC 语言中基于 GCD 的面向对象的封装;提...
2020-02-28 23:47:44
361
原创 iOS - 多线程(三):GCD
iOS - 多线程 系列文章iOS - 多线程(一):初识iOS - 多线程(二):pthread、NSThreadiOS - 多线程(三):GCDiOS - 多线程(四):NSOperationiOS - 多线程(五):线程同步方案1. GCD 初识1.1 GCD 介绍全称是 Grand Central Dispatch,也简称 Dispatch;纯 C 语言,提供了非常多...
2020-02-28 23:36:36
492
原创 iOS - 多线程(二):pthread、NSThread
iOS - 多线程 系列文章iOS - 多线程(一):初识iOS - 多线程(二):pthread、NSThreadiOS - 多线程(三):GCDiOS - 多线程(四):NSOperationiOS - 多线程(五):线程同步方案1. pthread1.1 pthread 介绍全称 POSIX Thread,POSIX(Portable Operating System I...
2020-02-28 22:46:08
302
原创 iOS - 多线程(一):初识
iOS - 多线程 系列文章iOS - 多线程(一):初识iOS - 多线程(二):pthread、NSThreadiOS - 多线程(三):GCDiOS - 多线程(四):NSOperationiOS - 多线程(五):线程同步方案1.线程和进程1.1 线程的定义线程是资源分配的最小单位,也是处理器调度的基本单位;线程是进程的基本执行单元,一个进程的所有任务都在线程中执行;...
2020-02-28 22:34:23
290
原创 深入浅出 RunLoop(五):RunLoop 与 NSTimer
RunLoop 系列文章深入浅出 RunLoop(一):初识深入浅出 RunLoop(二):数据结构深入浅出 RunLoop(三):事件循环机制深入浅出 RunLoop(四):RunLoop 与线程深入浅出 RunLoop(五):RunLoop 与 NSTimer深入浅出 RunLoop(六):相关面试题RunLoop 与 NSTimer由前面的文章我们知道,NSTimer是由R...
2020-02-27 20:35:10
692
原创 深入浅出 RunLoop(四):RunLoop 与线程
RunLoop 系列文章深入浅出 RunLoop(一):初识深入浅出 RunLoop(二):数据结构深入浅出 RunLoop(三):事件循环机制深入浅出 RunLoop(四):RunLoop 与线程深入浅出 RunLoop(五):RunLoop 与 NSTimer深入浅出 RunLoop(六):相关面试题RunLoop 与线程的关系苹果官方文档中,RunLoop的相关介绍写在线程编...
2020-02-27 20:06:00
1344
原创 深入浅出 RunLoop(三):事件循环机制
RunLoop 系列文章深入浅出 RunLoop(一):初识深入浅出 RunLoop(二):数据结构深入浅出 RunLoop(三):事件循环机制深入浅出 RunLoop(四):RunLoop 与线程深入浅出 RunLoop(五):RunLoop 与 NSTimer深入浅出 RunLoop(六):相关面试题前言前面我们介绍了RunLoop的基本概念以及相关数据结构,这篇我们来讲解一...
2020-02-27 19:35:19
712
原创 深入浅出 RunLoop(二):数据结构
RunLoop 系列文章深入浅出 RunLoop(一):初识深入浅出 RunLoop(二):数据结构深入浅出 RunLoop(三):事件循环机制深入浅出 RunLoop(四):RunLoop与线程深入浅出 RunLoop(五):RunLoop与NSTimer深入浅出 RunLoop(六):相关面试题CFRunLoopRefRunLoop对象的底层就是一个CFRunLoopRef结构...
2020-02-27 19:11:15
381
原创 深入浅出 RunLoop(一):初识
RunLoop 系列文章深入浅出 RunLoop(一):初识深入浅出 RunLoop(二):数据结构深入浅出 RunLoop(三):事件循环机制深入浅出 RunLoop(四):RunLoop 与线程深入浅出 RunLoop(五):RunLoop 与 NSTimer深入浅出 RunLoop(六):相关面试题RunLoop 简介运行循环,在程序运行过程中循环做一些事情(如接收消息、处...
2020-02-27 18:54:18
498
原创 深入浅出 Runtime(六):相关面试题
Runtime 系列文章深入浅出 Runtime(一):初识深入浅出 Runtime(二):数据结构深入浅出 Runtime(三):消息机制深入浅出 Runtime(四):super 的本质深入浅出 Runtime(五):具体应用深入浅出 Runtime(六):相关面试题Q:你了解 isa 指针吗?isa指针用来维护对象和类之间的关系,并确保对象和类能够通过isa指针找到对应的方...
2020-02-26 01:34:48
354
原创 深入浅出 Runtime(四):super 的本质
Runtime 系列文章深入浅出 Runtime(一):初识深入浅出 Runtime(二):数据结构深入浅出 Runtime(三):消息机制深入浅出 Runtime(四):super 的本质深入浅出 Runtime(五):具体应用深入浅出 Runtime(六):相关面试题1. objc_super 与 objc_msgSendSuper我们先来看两个数据结构objc_super和o...
2020-02-25 20:30:58
517
原创 深入浅出 Runtime(三):消息机制
Runtime 系列文章深入浅出 Runtime(一):初识深入浅出 Runtime(二):数据结构深入浅出 Runtime(三):消息机制深入浅出 Runtime(四):super的本质深入浅出 Runtime(五):具体应用深入浅出 Runtime(六):相关面试题1. objc_msgSend 方法调用流程OC中的方法调用,其实都是转换为objc_msgSend()函数的调...
2020-02-25 19:58:46
316
原创 深入浅出 Runtime(二):数据结构
Runtime 系列文章深入浅出 Runtime(一):初识深入浅出 Runtime(二):数据结构深入浅出 Runtime(三):objc_msgSend方法调用流程深入浅出 Runtime(四):super的本质深入浅出 Runtime(五):具体应用深入浅出 Runtime(六):相关面试题1. objc_objectObjective-C的面向对象都是基于C/C++的数据结...
2020-02-25 18:40:44
356
原创 深入浅出 Runtime(一):初识
Runtime 系列文章深入浅出 Runtime(一):初识深入浅出 Runtime(二):数据结构深入浅出 Runtime(三):objc_msgSend方法调用流程深入浅出 Runtime(四):super的本质深入浅出 Runtime(五):具体应用深入浅出 Runtime(六):相关面试题Runtime 简介Runtime 是一个用C、汇编编写的运行时库,包含了很多 C ...
2020-02-24 21:09:11
701
1
原创 OC - Block 详解
1.Block 的使用Block 是什么?块,封装了函数调用以及调用环境的 OC 对象,Block 的声明// 1.@property (nonatomic, copy) void(^myBlock1)(void);// 2.BlockType:类型别名typedef void(^BlockType)(void);@property (nonatomic, copy) BlockT...
2020-02-23 22:07:40
1327
原创 OC - Association 关联对象
1.关联对象1.1 使用场景默认情况下,由于分类底层结构的限制,不能直接给 Category 添加成员变量,但是可以通过关联对象间接实现 Category 有成员变量的效果。传送门:OC - Category 和 Extension1.2 使用方法#import "Person.h"@interface Person (Test)@property (nonatomic, assig...
2020-02-22 02:26:02
451
原创 OC - load 和 initialize
1.load1.1 load 方法的调用① 调用时刻:+load方法会在Runtime加载类、分类时调用(不管有没有用到这些类,在程序运行起来的时候都会加载进内存,并调用+load方法);每个类、分类的+load,在程序运行过程中只调用一次(除非开发者手动调用)。② 调用方式: 系统自动调用+load方式为直接通过函数地址调用,开发者手动调用+load方式为消息机制objc_msgSen...
2020-02-19 23:07:19
376
原创 OC - Category 和 Extension
1.Category 分类1.1 Category 的使用场合① 给一个类添加新的方法,可以为系统的类扩展功能。② 分解体积庞大的类文件,可以将一个类按功能拆解成多个模块,方便代码管理。③ 创建对私有方法的前向引用:声明私有方法,把 Framework 的私有方法公开等。直接调用其他类的私有方法时编译器会报错的,这时候可以创建一个该类的分类,在分类中声明这些私有方法(不必提供方法实现),...
2020-02-19 20:00:37
249
原创 OC - 属性关键字和所有权修饰符
1. 属性关键字有哪些?分类属性关键字原子性atomic、nonatomic读写权限readwrite、readonly、setter、getter内存管理assign、weak、unsafe_unretained、retain、strong、copy可空性(nullable、_Nullable 、__nullable)、(nonnull、_Nonn...
2020-02-19 00:49:15
373
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人