自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(279)
  • 资源 (4)
  • 收藏
  • 关注

原创 Swift - Alamofire源码解析

文章目录Alamofire源码解析一、Alamofire目录结构二、使用的基本流程 (不讲解基本使用,从源码解析)1. 发起请求的源码 (举例:普通请求流程)2. SessionManager 的关键点解析3. SessionManager , 发起请求关键代码4. SessionDelegate , 收到请求关键代码5. TaskDelegate , 收到请求的关键代码5. 数据序列化的工作。 ResponseSerialization类,关键代码总结Alamofire源码解析解析版本: Ala

2021-10-13 15:36:43 861

原创 Swift持久化存储对象到文件中JSONEncoder 与 JSONDecoder

保存一个弹窗对象数组到本地// 数据存储本地的路径 private lazy var filePath:URL = { let manager = FileManager.default var filePath = manager.urls(for: .documentDirectory, in: .userDomainMask).first filePath!.appendPathComponent("aderviseInfos.archive"

2021-10-09 16:02:11 1030

原创 iOS开发底层之多线程探索 - 19

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码

2021-09-12 18:53:52 458

原创 iOS开发底层之KVO探索下 -18

文章目录一、自定义KVO二、KVO框架# 前言提示:本章主要讲自定义KVO 和 优秀的第三方KVO一、自定义KVO二、KVO框架

2021-09-11 22:06:24 354

原创 iOS开发底层之KVO探索上 - 17

文章目录前言一、KVO是什么?二、KVO注意项1. KVO中的Context有什么作用?2. 忘记移除观察者,而造成程序的崩溃3. 控制某些属性不能使用KVO4. 一对多的观察。5. 对可变数组的KVO。三、KVO的流程和原理前言本章内容主要是围绕KVO进行探索,从KVO的介绍 -》KVO的坑点 -》 KVO的大致流程 -》KVO的自定义实现 -》优秀的KVO封装库介绍。一、KVO是什么?KVO的全称为:Key-Value Observing,“键值监听”。主要作用为:监听某个对象属性值

2021-09-10 18:00:20 190

原创 iOS-高德地图路线规划开发记录

1. 骑行路径规划调用 // 获取当前位置作为起点 let beginLocation = FCMapShareTool.shared._userLocationCoordinate2D let request = AMapRidingRouteSearchRequest.init() // 路径起始点 request.origin = AMapGeoPoint.location(withLatitude: C

2021-09-10 09:50:41 547

原创 iOS开发底层之常见问题解答 - 15

1. load与c++构造函数调用顺序2. runtime是什么?3. initialize调用顺序?4. 同名分类方法的调用顺序?5. 分类和扩展的区别?

2021-09-09 17:32:58 152

原创 iOS开发底层之KVC了解 - 16

KVC是什么?KVC全称Key-Value Coding(键值编码),是一种由NSKeyValueCoding非正式协议启用的机制,对象采用它来提供对其属性的间接访问。当一个对象符合键值编码时,它的属性可以通过字符串Key来寻址。这种间接访问机制补充了实例变量及其关联的访问方法所提供的直接访问API介绍:KVC的API在Foundation框架中KVC本质上是对NSObject、NSArray、NSDictionary、NSMutableDictionary、NSOrderedSet、NSSet

2021-09-09 11:42:32 139

原创 iOS开发底层之类加载下 (关联对象) - 14

文章目录前言一、分类什么时候加载?二、attachCategories三、 类扩展、分类 应用层1. category:分类2. extension:扩展3 .关联对象 (AssociatedObject)4. AssociationsHashMap总结1. 设值过程2. 取值过程前言ro rw rwe的补充?ro (干净内存,只读) -》 rw (脏内存,昂贵,所以需要优化) -》 rwe 。之所以会有rw,是因为运行时功能,会修改内存,这时候因为Ro只读,不能修改,所以产生了rw, 用来去

2021-08-22 17:46:57 121

原创 iOS开发底层之类加载(中) - 13

文章目录本章内容描述一、realizeClassWithoutSwift二、methodizeClass1. 扩展 read_images三、懒加载与非懒加载类的区别1.懒加载执行顺序2. 非懒加载的的执行顺序四. category 分类的介绍总结1. ro 、rw 、rwe的区别?本章内容描述本章的源码依旧是在 objc 源码中。类的实现 realizeClassWithoutSwift 重点方法运行的主线为: Read_images -》realizeClassWithoutSwift

2021-08-21 17:08:09 160

原创 iOS开发底层之类加载上 - 12

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录准备资料一、编译过程?二、静态库与动态库区别1. 静态库2. 动态库三、dyld介绍1.dyld是什么?2. dyld有什么用?四、dyld的工作流程1.上帝视角之查看dyld做了什么?2.dyld-做了什么?。3dyld-源码解读(后期补上)。准备资料dyld源码下载本章内容: 应用程序的加载过程一、编译过程? 源文件(.h , .h , .cpp) -》 预编译 -》 编译 -》 汇编 -》 链接 - 》 可执行

2021-08-15 16:44:13 127

原创 iOS-组件化开发之私有库制作与版本更新(持续更新)

一.私有库制作与使用准备条件github账号设置好SSH电脑有安装好Cocoapods环境1. 创建远程索引库在github上, new Repository 一个空的项目,项目如下: 下载项目2. 创建本地索引库注意: 名称最好和远程索引库保持一致打开终端, 进入cocoapods配置目录下:cd /Users/hh/.cocoapods/repos创建本地索引库,并与远程索引库关联格式:pod repo add 本地索引库名字 远程索引库的地址pod repo add Z

2021-08-13 18:20:24 638

原创 Flutter升级到2.0后出现的问题

安全模式错误信息? Error: Cannot run with sound null safety, because the following dependencies don't support null safety: - package:http_parser - package:dio - package:shared_preferences表明上面的第三方插件不支持安全模式。解决方法如下:在Android Studio的 Termin.

2021-07-23 17:29:36 547 1

原创 iOS开发底层之消息的快速与慢速转发 - 11

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport

2021-07-08 18:19:57 461 1

原创 iOS开发底层之方法的慢速查找流程探索+方法动态决议上 - 10

文章目录一、二分查找算法1.仿苹果底层二分查找算法2. 通过案例玩下这个算法二、慢速查找流程图1.总结下慢速查找的主要过程2.读入数据总结一、二分查找算法上篇文章中提到过,苹果底层在查找方法的时候用到了二分查找算法, 觉得是用的代码最少,并且利用了位移,很有巧妙性,不得不佩服苹果的工程师还是牛逼PLUS。1.仿苹果底层二分查找算法// 二分查找 swift版本,for 循环体报错,这个地方还没有调试通过,仅供参考思路。 var array = [1,2,3,4,5,6,7,8,9,10] //

2021-07-07 17:49:11 133 1

原创 iOS开发底层之Runtime、Objc_msgSend探究下 - 09

文章目录上篇文章补充1.GetClassFromIsa_p16 宏解读二、CacheLookup探索二、使用步骤1.引入库2.读入数据总结上篇文章补充1.GetClassFromIsa_p16 宏解读上篇文章,没有解读此处, 源码如下。.macro GetClassFromIsa_p16 src, needs_auth, auth_address /* note: auth_address is not required if !needs_auth */#if SUPPORT_INDEX

2021-07-05 11:40:58 128 2

原创 iOS开发底层之Runtime、Objc_msgSend探究 - 08

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport

2021-06-30 00:05:24 202 1

原创 iOS开发底层之类的底层Cache_t 探究 - 07

文章目录遗漏知识补充一. 面试题1、isKindOfClass 与isMemberOfClass 底层探索二.Cache_t 底层探索cache_t 底层结构cache_t LLDB调试cache_t 脱离源码调试技巧。cache_t 底层深入分析。遗漏遗漏知识补充 1. LLDB调试,发现 对象的 isa 和类的 isa 不一样, 而类的 isa 与元类的一样, 那是因为对象的 isa 中不仅包含了存储类, 还包含了 其他的值,如 引用计数, 是否正在释放,weak 等。 一. 面试题1

2021-06-27 18:54:58 122 2

原创 iOS开发底层之类的底层探究下-06

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录类底层探究一、解决上篇博客遗留的问题?1. 类方法藏在何处?二、成员变量(实例变量)与属性1.把文件编译成cpp类型,看c++源码。2.类型编码总结类底层探究一、解决上篇博客遗留的问题?1. 类方法藏在何处?二、成员变量(实例变量)与属性1.把文件编译成cpp类型,看c++源码。// 成员变量 vs 属性 VS 实例变量@interface LGPerson : NSObject{ // STRING

2021-06-27 13:14:01 99 1

原创 iOS开发底层之类的底层探究-05

文章目录一、探索类1.通过实操观察类的结构2. objc_class 探索 - 属性的本质3. objc_class 探索 - 方法的本质二. 遗留问题?一、探索类1.通过实操观察类的结构下面就一张经典的图,详细表明了实例对象、类、元类、根元类之间的联系。isa的走位图isa的元类继承链 苹果官方isa图,包含了所有isa走位情况:结论:isa的走位: 对象isa -> 类isa -> 元类isa -> 根元类isa ->根元类。根类isa走位: 根类isa

2021-06-26 23:55:02 130 1

原创 iOS开发底层之对象的本质-04

文章目录对象的本质一、对象的本质是什么?1.初步了解对象的底层。2. 联合体与位域3.非常重要- isa 详解二. 命令记录对象的本质把目标文件编译成C++文件。比如: 把main.m文件编程成main.cpp文件,下面为终端命令 clang -rewrite-objc main.m -o main.cpp提示:以下是本篇文章正文内容一、对象的本质是什么?对象的本质其实就是结构体,如何得出,请看下面的编译成C++后的源码。1.初步了解对象的底层。新建一个MyPerson对象,看.

2021-06-26 19:16:00 104 1

原创 iOS开发底层之内存对齐详解-03

前言由于上一篇文章没有详细分析Alloc的核心,本篇幅详细讲解Alloc的核心三步。我们先来回顾下Alloc的整个流程。

2021-06-25 20:06:23 172 2

原创 iOS开发底层之NSObject-alloc源码分析-02

iOS开发底层之NSObject源码分析探索 Alloc 到底是走的那个源码?通过汇编代码,来查找新建Nsobject的时候到底走那部分源码?打开汇编的方式,见上篇文章 开发底层之alloc原理初探.上截图,展示NSobject, alloc后到底走那个那个源码?汇编展示: 可以很清晰的看到alloc后,下一步走的就是 objc_alloc 方法。探索为什么alloc会走objc_alloc源码呢?首先分析NSObject 与自定义NSObject的区别。NSObject是所有iO

2021-06-21 18:10:09 142

原创 iOS开发底层之alloc原理初探 -01

第一部分 源码探索第二部分第三部分第四部分第五部分

2021-06-06 21:09:14 226 5

原创 iOS - lldb底层探索(一)

调试LLDB源码终端使用的lldb与xcode中的lldb是同一个lldb,所以没有什么版本的限制于不同。LLDB命令学习。1. 在工程运行过程中,修改指定条件,在不重新运行工程的情况下,实现指定操作。命令如下:方式一: 基于行号去修改条件 , 如果行号会改变,就不适应这种命令。br set -l 修改得代码行号 -f 那个控制器或者类 -C "e -- 你修改的条件" -G true如: br set -l 33 -f ViewController.m -C "e -...

2021-04-08 17:03:52 263

原创 iOS - 底层知识学习之路-Mach-o 、lldb、 dyld

MACHO与重定位符号表认识。命令回顾1. 将源代码编译成可执行文件命令Clang 文件名 -o 输出的可执行文件名称如:Clang test.m - o test 2. 查看可执行文件的代码段命令objdump --macho -d 可执行文件名称如:objdump --macho -d test3. 将文件编译生.o文件命令clang -c 文件名 -o .o文件名如:clang -c test.m -o test.o4. 分析.o文件的代码段命令.

2021-03-31 18:15:35 466

原创 iOS - Shell 脚本学习入门

解释器与编译器1. 编译器过程: 源代码 - 预处理器 - 编译器 - 目标代码 - 链接器 - 可执行程序2.解释器过程: 源代码 - 解释器 (python ,shell , js)如何学习脚本: 三步骤1. 学语法2. 看脚本3. 抄基本语法:省略 。 自己去 w3c学习 。常用语法记录:#!/bin/bashIS_ZSH=""# bash-3.2 和 zsh: << ! Shebang(Hashbang...

2021-03-30 16:47:14 967 1

原创 iOS - 静态库、动态库从浅到深学习之路 (四)

Module(模块介绍)一个Module是机器代码和数据的最小单位,可以独立于其他代码单位进行连接。通常, Module是通过编译单个源文件生成的目标文件,例如,当前的test.m文件被编译成目标文件test.o时,当前的目标文件就是一个Module.但是有一个问题,Moule在调用的时候会产生开销,比如我们在使用一个静态库的时候。include : 有重复编译相同文件的问题import : 引入了Module,相同的代码只编译一次, 提升了编译速度。Moule :默...

2021-03-17 18:13:28 639

原创 Xcode12.4 上传app解决Authenticating with the App Store一直卡住的问题

第一步: 打开终端输入open ~/Library/Caches/com.apple.amp.itmstransporter/第二步: 删除所有文件第三步: 在终端输入 (比较慢,翻墙会快点)/Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/itms/bin/iTMSTransporterstep4: 下载完了之后重启Xcode...

2021-03-12 17:29:32 729

原创 iOS - 静态库、动态库从浅到深学习之路 (三)

XCFramework (framework的增强版)说明:1. 苹果官方推荐,支持的,可以更加方便多个平台和架构的分发二进制库的格式。2. 需要xcode11以上支持3. 在2019年提出的framework的另一种先进格式。多架构合并架构打包命令:// 打包成模拟器架构xcodebuild archive -project 'SYTimer.xcodeproj' \-scheme 'SYTimer' \-configuration Release \-dest...

2021-03-09 19:05:05 982 1

原创 iOS - 静态库、动态库从浅到深学习之路 (二)

是滴

2021-03-03 10:01:16 220

原创 iOS - 静态库、动态库从浅到深学习之路 (一)

.a与.framework静态库详解 1. 常见库格式.a .dylib .framework .xcframework2. 执行顺序源码 -》编译成目标文件 (.o文件) -》 通过链接器 -》 可执行文件3. clang :工具合集 终端 man clang 查看具体使用说明。4. clang 命令学习生成目标文件 (.o文件)/** clang命令参数: -x: 指定编译文件语言类型 -g: 生成调试信息 ...

2021-02-26 14:41:36 432

原创 Strip命令与MachO符号详解、llvm-strip了解

(一)MachO解剖 - 详细了解1. Mach-O 组成: 从上到下分别为头层 Mach Header中层 Load Command 下层 _ _text代码 _ _ DATA代码 符号表Mach-O 实际上就是配置 + 二进制代码, ...

2021-02-20 16:59:29 2128

原创 Xcode多环境配置详解

多环境配置 名词解释 Project: 包含了项目所有的代码,资源文件,所有信息。 Target: 对指定代码和资源文件的具体构建方式。 真正的打工人 Scheme: 对指定Target的环境配置。 2. 多环境创建Project 实现方式一多环境配置: 结合自定义宏下面图是OC设置的, swift 通过在Build Settings 下面的 Other Swift Flags 设置...

2021-01-29 18:13:50 1618 2

原创 Swift - Swift Intermediate Language 语言探索

(一)生成CIL文件 1. OC - Clang 来查看底层原理 2. swift - swiftC 生成SIL文件来查看底层原理。常用swiftc命令生成可执行文件:swiftc -o main.out main.swift 生成抽象语法树的命令(AST):swiftc main.swift -dump-ast 生成中间语言(SIL):swiftc main.swift -emit-sil LLVM中间表示层(LLVM IR):swiftc main.swift -em...

2021-01-26 11:53:52 198 1

原创 Flutter 创建第一个项目 for mac

接着上文搭建好了Flutter的基本环境。 现在我们来开始创建一个Flutter项目。Android studio 方式1. 利用 android studio 创建项目。2. 下载Flutter 和 dart 插件, 路径打开 Android Studio -- Preferences -- plugins -- 搜索 Flutter 和 dart ,下载完毕后,就重启 Android studio.3. 如果出现下图菜单中多了个 新建flutter项目,说明插件安装成...

2020-10-26 22:18:41 372

原创 Flutter环境搭建教程 for Mac

准备工作1. 下载flutter的SDK及项目,下载地址:flutter下载2. 下载完毕后放到你想存放的地址并记住,后面修改环境变量需要用到。3. Xcode (versionxcode11.1)4. android studio (version 4.1)5. visual studio code (version 1.27.2)(1). 环境变量配置1. 打开终端:输入 vim ~/.bash_profile , 输入下面 ,其中 /Users/zhongg...

2020-10-25 10:55:59 436

原创 iOS - 开发针对iOS13QQ分享功能,弹框提示设备未授权 (错误码:25105)

解决方案与微信UniversalLink方案一致。1 。创建一个名字apple-app-site-association的json文件,details里面可以配置多个,Team ID是苹果开发者账号里面的,内容是第一个对象是微信的UniversalLink 设置, 第二个是qq的UniversalLink设置。{ "applinks": { "apps":...

2020-03-25 14:53:22 18847 2

原创 swift 5.0 本地随机验证码文本校验效果。

//// qshdVerifyCodeView.swift// qshd//// Created by 钟高荣 on 2020/3/12.// Copyright © 2020 钟高荣. All rights reserved.//import UIKitclass qshdVerifyCodeView: UIView { // 验证码的位数 ...

2020-03-12 17:11:44 363 1

原创 iOS - mac环境Jenkins自动化打包并上传蒲公英分发从0到1详细搭建过程,自我的实践记录

第一过程 :环境的相关配置条:0. mac 电脑,系统版本为为 10.14.51. 升级ruby环境: 我用的是rvm 1.29.9,可在终端 用 rvm -v 查看当前版本。2. 安装的有Xcode, 我用的Xcode版本为 Xcode 11.13. 需要安装 Homebrew, 这种方式最容易实现Jenkins自动化打包。开始:1.安装 Home...

2019-10-29 12:48:46 996

ios UIPickerView封装的中国省/市/区地址选择器 ,含有中国最新城市plist文件

ios UIPickerView封装的中国省/市/区地址选择器 ,含有中国最新城市plist文件

2016-05-24

中国所有城市的plist文件

中国城市列表,包含一个city的plist可以方便用户在其他地方使用。项目还添加了一个热门城市的代码,如不需要可自行修改不添加。

2016-05-24

iOS实现自定义相册多选demo

获取系统所有照片,并自定义选择照片的界面, 可实现多选。

2015-12-04

iOS 3Dtouch 开发demo

iOS9 3D Touch iOS 教程 ShortcutItem使用

2015-11-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除