摘要:▶ 什么是 CoreData CoreData 是苹果公司封装的进行数据持久化的框架,是 iOS 5 之后新出来的的一个框架, 它允许按照实体-属性-值模型组织数据,并以 XML、二进制文件或者 SQLite 数据文件的格式持久化数据。CoreData 可以节省代码量:一般可达 30% 到 70%;
阅读全文
摘要:▶ 线程死锁 死锁:是指两个或两个以上的进程(线程)在执行过程中,因争夺资源(如数据源,内存等。注:变量不是资源)而造成的一种互相等待的现象!若无外部处理作用,它们都将无限等待 死锁形成的原因有 A. 系统资源不足B. 进程(线程)推迸的順序不恰当C. 资源分配不当 死锁形成的条件有A. 互斥条件:
阅读全文
摘要:▶ SceneDelegate 自 Xcode11 发布以来,当你使用新 XCode 创建一个新的 iOS 项目时 SceneDelegate 会被默认创建!在 iOS 13 后它将负责 AppDelegate 的某些功能 最重要的是 window 的概念已被 scene 的概念所代替。 一个应用程
阅读全文
摘要:▶ KVO 实现原理 我们在 Person 中声明 age属性;在 ViewController 中创建两个 Person 的实例对象,并将其中一个添加观察者,监听 age属性 // - Person.h #import <Foundation/Foundation.h> @interface Pe
阅读全文
摘要:▶ 什么是 MVVM Model-View-ViewModel 是 M-V-VM 三部分组成,它本质上是 MVC 的改进版 MVVM 就是将其中 V层 的状态和行为抽象化,其中 ViewModel 将 视图UI 和 业务逻辑 分开,它取出 M层 数据的同时也可以帮忙处理 V层 中由于需要展示内容而涉
阅读全文
摘要:▶ 什么是 MVP MVP 是 MVC 设计模式派生出来的,它经常用来创建用户界面 MVP 工作原理 A. MVP 中 Presenter 完全把 Model 和 View 进行了分离,主要的程序逻辑在 Presenter 里实现。模型与视图完全分离,我们可以修改视图而不影响模型 B. Presen
阅读全文
摘要:▶ 如何传递两个以上的参数 下面用三种方式实现 DemoA:将所有参数放入一个字典或数组传过去!这种方式需要改动要调用方法的取参数的方式,比如使用字典传值时,双方需约定每一个参数放入字典对应的 key 是什么 - (void)viewDidLoad { [super viewDidLoad]; NS
阅读全文
摘要:▶ 线程通信 在开发中我们经常会在子线程进行耗时操作,等待操作结束后再回到主线程去刷新 UI,这就涉及到了子线程和主线程之间的通信;我们先来了解一下官方关于 NSThread 线程间通信的方法 // 在主线程上执行操作 - (void)performSelectorOnMainThread:(SEL
阅读全文
摘要:▶ 常用 API 在开发中,我们经常使用到的 API 有 // 任务只执行一次 dispatch_once() // 同步执行 dispatch_sync() // 异步执行 dispatch_async() dispatch_async_f() // 延迟到的时间点执行 dispatch_afte
阅读全文