- 博客(10)
- 资源 (1)
- 收藏
- 关注
原创 KakaJSON源码浅析(一)
目前github上比较常见的Swift版本JSON解析库有:ObjectMapper底层实现主要是通过运算符重载机制,需要手动对每一个属性写映射关系,比较繁琐。struct Temperature: Mappable { var celsius: Double? var fahrenheit: Double? init?(map: Map) { } mutating func mapping(map: Map) { celsius &
2020-11-11 16:20:35
724
原创 Alamofire从源码浅析2种不符合实际需求的参数格式总结
目前公司的Swift项目网络请求使用的是第三方开源库Alamofire,在使用的过程中有遇到过2种参数格式无法正确传递到后端的情况;1)参数包含空数组直接会被过滤删除掉2)参数包含二维数组会把二维数组转换为一维数组下面将结合Alamofire参数编码部分的源码来一步一步的分析为啥不满足这2种参数格式。1、首先看下实际结果这里有必要先说下测试接口使用 httpbin.org来进行测试的好处;因为它在被调用后可以返回服务端所接收到的所有参数;在我们这里仅仅调试参数,所以比使用抓包工具要更方便一些,
2020-10-21 00:32:15
408
原创 Swift库资源文件获取
库资源包括图片、xib、xib对应的图片、以及其它文件等。本文只分析总结获取图片资源文件中所遇到的坑;大致原理其实都是一样,当你真正理解了其中的原理再获取其它资源是一样的容易。我们制作的库有动态库、静态库之分;首先理解下:Bundle我们构建的app以及framework都是一个bundle,它又主要分为2种:1)Bundle.mainThe main bundle lets you access the resources in the same directory as the curren
2020-09-21 01:41:12
1169
原创 Swift静态Pod私有库踩坑
首先你应该掌握以下几点知识:1、动态库、静态库的区别,以及对应的架构合并、拆分。2、Xcode对应的workspace、project、target的关系。3、Pod依赖可以是源码、静态库(.a+framework)、动态库(framework)。4、源码依赖的情况下,Pod打包进宿主工程可以选择是全部静态库打包还是动态库打包,或者某个库单独设置。5、CocoaPods本地仓库缓存。以上只是大概列举了一部分比较重要的,其实这块涉及到的知识点非常之多,如果你仅仅是为了实现这些功能,而并没
2020-09-21 01:40:29
1148
1
原创 本地Pod库对应的Podfile和Podspec如何写?
一般我们制作的pod公有库或者是私有库都放在远程,并且每次修改都需要push;如果仅仅是放在本地进行调试的模块/组件,那么对应的podfile文件以及podspec应该如何编写呢?1、搭建测试项目以及framework1)先创建一个测试项目2)创建一个framework,放到和测试项目同一个目录下3)再创建一个类MTPopView4)关掉MTPopView,然后在MTShopList项目中通过Add Files添加MTPopView5)按照正常的target相互调用那样,添加framew
2020-08-31 22:31:43
1758
原创 Podspec语法
前言 长时间不写Podspec文件,容易忘记里面的一些属性含义,所以本文把 官方Podspec语法v1.9.0 翻译出来并且加上了一部分自己的理解,方便后续在用到的时候可以直接拿过来看。CocoaPods版本升级后会保持对本文进行更新。一、Root specification相关root规范存储了相关库特定版本的信息。下面的属性只能写在root规范上,而不能写在“sub-spec”上。1、必须的字段. namespec.name = 'AFNetworking'pod search 搜
2020-08-30 21:33:08
1403
原创 iOS项目中通过shell脚本批量替换第三方资源文件
1、需求 我们在做开发过程中,会用到很多第三方库,并且通过CocoaPods进行管理,有时候引入的这个必要的库在UI上并不能完全满足产品的需求,比如背景图片、铃声等资源,需要对第三方库资源文件进行更改; 如果每次通过手动的方式去找对应bundle里面的资源文件,然后一个个去替换很是麻烦,并且也很容易弄错,所以可以考虑写一个shell脚本进行批量的替换操作。2、shell脚本源码#!/bin/shecho "\n----------- 开始???? --------------\n"sourc
2020-07-20 19:48:04
556
原创 对Swift协议RawRepresentable的理解
前言对于枚举原始值,系统默认只能是字符串、整型、浮点型字面量,那么我们能不能增加其它类型呢?答案是可以的,通过协议RawRepresentable就可以实现正文首先定义一个枚举enum Terrain: String { case forest = "F" case mountain = "M" case water = "W"}1、RawRepresentable协议该协议定义了一个初始化构造器,当传入无效的原始值时构造器会返回nil;还定义了一个rawValue
2020-07-08 17:07:01
1529
原创 在Swift开发中关于Optionals你需要知道的5件事(译)
在Swift开发中关于Optionals你需要知道的5件事(译)Optionals是Swift的核心,并且在第一个版本中就已经存在;optional修饰的值允许我们在关注可能为nil值的时候书写整洁的代码。如果你刚开始接触Swift,那么你可能需要熟悉在属性中添加?的语法;只要你熟悉了这个语法你就可以从中受益,比如extensions。在Swift中什么是可选值?在我们深入了解option...
2019-11-16 23:50:47
637
原创 iOS WebView通信链路安全
最近在整理技术点的时候发现电脑上存有一些知识点的记录,是以前在开发的过程中遇到的一些问题,现在再重新梳理了出来项目需求:防止webview里面的数据被抓包,给app中的webview也加上https校验,防止攻击https校验原理、加密原理、证书制作等已经有很多文章介绍,相信大家已经很熟悉了;本文只讲在多家服务器资源访问的情况下对web实现https校验的部分。一、相关知识点一般情况下很...
2019-08-14 00:06:06
724
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人