结构体是C/C++两种语言中的基础语法, C语言中的结构体只是一个存粹的数据集合类型的描述,它只有数据成员而没有成员方法。C++中的结构体则被赋予为一个类定义的角色,它可以有数据成员也可以有成员方法。OC语言源自于C语言,它是面向对象的C语言,自然结构体的概念就和C语言中的定义保持一致。
结构体中的数据成员可以是基本类型,也可以是数组,也可以是指针,还可以是其他的结构体。下面是一个...
基于Aspects框架的iOS热修复方案
背景
JSPatch 无法审核,就算进行深度的代码混淆依然无法逃脱苹果审核机制App 审核加快,但是依然无法很好的控制线上 Bug 的影响范围目前未发现有其他可替代方案,只能另寻他径
目标
JSPatch 可以任意替换和新增方法,甚至可以用来开发新模块。但是如果纯粹用来修复线上bug的话,我们并不需要如此强大的功能。热修复只需要具备以下几点功能足以:
方法替换为空实现方法参数修改方法返回值修改...
如何 HotReload Objective-C 代码——用 SwiftUI
SwiftUI 和 Xcode 11
自从 SwiftUI 推出之后,它带来左边代码右边实时预览的特性,让一直苦于 Objective-C 耗时、低效、繁琐的开发流程的我很羡慕。但是 SwiftUI 需要 Swift 工程运行在 iOS 13 的 target 上才能使用。目前国内大部分的 App 基本都是 Objective-C,最低支持 iOS 9 版本的现状,阻止进一步将 SwiftUI 引入到实际工程里。
直到最近重温 WWDC2019 Mastering Xcode Previews,其中...
iOS 中事件的响应链和传递链
iOS事件链有两条:事件的响应链;Hit-Testing事件的传递链
响应链:由离用户最近的view向系统传递。initial view –> super view –> ….. –> view controller –> window –> Application –> AppDelegate传递链:由系统向离用户最近的view传递。UIKit –> active app's event queue –> window –>&n...
设计模式之(九)观察者模式
前言
什么是观察者模式
观察者模式 属于行为型模式。
观察者模式(有时又被称为模型(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...
iOS开发之–KVO详解
如果你从事iOS开发,
对于KVO肯定不陌生.
今天写了这篇文章,
让我们进一步了解KVO,
我们从下图几个部分了解KVO,
如果你看了这篇文章,
会颠覆你对KVO的认知,
原来你了解过得KVO只是一部分.
1.什么是KVO?
KVO(Key Value Observing, 键值观察)是Objective-C对观察者模式的实现,每次当被观察对象的某个属性值发生改变时,注册的观察者便能获得通知。
2.KVO的使用
这...