前言
什么是观察者模式
观察者模式 属于行为型模式。
观察者模式(有时又被称为模型(Model)-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。
模式结构
角色
...
用100行代码提升10倍的性能
提出问题
从一个我常用的面试题,也是真实需求开始聊起:
你需要在前端展示 5000 条甚至更多的数据,每一条数据的数据结构是一个对象,里面有格式各样的属性。每个属性的值又可以是基本类型,对象,甚至数组。这里的对象或者数组内部的元素又可以继续包含对象或者数组并且允许无限嵌套下去。比如
{
"name": {
"firstName": "yi",
"lastName": "li"
},
"age": 23,
"roles": ['dev...
iOS中常见的几种加密方式总结!
这篇文章主要给大家介绍了关于iOS中常见的几种加密方法,其中包括 base64加密、POST加密、Token值介绍、MD5加密--(信息-摘要算法) 哈希算法之一、时间戳密码以及指纹识别等方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
前言
在我们日常开发中,加密是必不可少的一部分,而普通加密方法是讲密码进行加密后保存到用户偏好设置中,钥匙串是以明文形式保存,但是不知道存放的具体位置...
基础用法 performSelector
一、基础用法 performSelector响应了OC语言的动态性,延迟到运行时才绑定方法。意味着可以传递一个变量选择器作为参数,向接收方发送指定的消息并返回消息的结果
[obj performSelector:@selector(play)]; [obj performSelector:@selector(play) withObject:@“xx”]; [obj performSelector:@selector(play) withObject:@“xx” withObject:@“ss”]; 在主线程执行,并指定是否(waitUntilDone)阻塞此线程 [obj...
基于 Swift 多地图源业务向地图控件实现(一):封装地图源
因为我的项目里第一个接入的地图源是高德地图,这里的接口以高德地图作为示范。
既然要接入多个地图源,可以良好的支持地图源切换,那么第一步就是隔离具体地图源。隔离具体实现最常使用的方式就是使用接口隔离。UITableView 中常用的 UITableViewDataSource 也是类似的机制,使用接口隔离了具体的 dataSource 实现。
我们定义一个 protocol 来声明地图源应该提供的能力:
public protocol Vendo...
算法-青蛙跳-斐波那契数列(OC、Swift、Python)
前言
我们在面试的过程中,经常会有一些面试官会问到算法,当然’青蛙跳🐸‘也是会被问到比较多的一种算法(笔者今年面试就被问过两次,让我在白板和白纸上手写代码,虽然我非常讨厌手写代码,但是我还是用伪代码写出来了😂),青蛙跳也叫做斐波那契数列,我们在上学的时候也学过;一般面试题目如下:
👉题目:一只青蛙一次可以条一级台阶也可以一次跳两级台阶,如果有n级台阶青蛙有多少种跳法?🤔
...
iOS AVFoundation动态人脸识别功能
一、AVCaptureSession:设备输入数据管理对象
可以根据AVCaptureSession创建对应的AVCaptureDeviceInput、AVCaptureVideoDataOutput对象
创建出来的Input、Output对象会被添加到AVCaptureSession中管理,代表输入、输出数据对象,它配置抽象硬件设备的ports。
// 1.创建媒体管理会话
AVCaptureSession *captureSession = [[AVCaptureSession alloc] init];
self.session = captureSession...
iOS开发之–KVO详解
如果你从事iOS开发,
对于KVO肯定不陌生.
今天写了这篇文章,
让我们进一步了解KVO,
我们从下图几个部分了解KVO,
如果你看了这篇文章,
会颠覆你对KVO的认知,
原来你了解过得KVO只是一部分.
1.什么是KVO?
KVO(Key Value Observing, 键值观察)是Objective-C对观察者模式的实现,每次当被观察对象的某个属性值发生改变时,注册的观察者便能获得通知。
2.KVO的使用
这...
iOS逆向之文件系统结构
1.系统文件结构
系统文件
在手机终端执行uname -a 命令,终端可以在cydia中安装MTerminal插件. 执行命令后,可以看到iOS系统基于Darwin Kernel的,而Darwin Kernel是一种UNIX-like操作系统.
文件目录 在越狱设备上,可视化方式查看iOS系统文件相对于一般的iOS开发者来说,可能对iOS系统结构一无所知.因为权限低,App不能访问自身以外的绝大多数文件.iOS一旦越狱,就可以拥有更高的root权限,从而访问全系...
iOS开发面试–SDWebImage原理
一、 SDWebImage原理
一个为UIImageView提供一个分类来支持远程服务器图片加载的库。
功能简介:
1、一个添加了web图片加载和缓存管理的UIImageView分类
2、一个异步图片下载器
3、一个异步的内存加磁盘综合存储图片并且自动处理过期图片
4、支持动态gif图
5、支持webP格式的图片
6、后台图片解压处理
7、确保同样的图片url不会下载多次
8...