My Knowledge Library

个人博客


  • 首页

  • 分类

  • 标签

  • 归档

How to retrieve the frame of a subview in parent view: Leveraging GeometryReader and PreferenceKey

发表于 2023-06-26 | 分类于 Swift | | 阅读次数:
字数统计: 14k | 阅读时长 ≈ 14 mins.
When developing using SwiftUI, there are situations where we need to get the frame of a subview in its ancestor view. For instance, I am currently wor ...
阅读全文 »

用 Hexo 写文章时怎样愉快地在 Markdown 中插入图片

发表于 2023-06-08 | 分类于 工具 | | 阅读次数:
字数统计: 4.7k | 阅读时长 ≈ 5 mins.
用 Markdown 写文章时在文章中插入图片经常是一件很麻烦的事情,那么有没有办法将这件事情变的愉快呢,本文或许能对你有一些帮助。 打开 Hexo 的文章资源文件夹开关Hexo 中,用资源(Asset)来代表除了文章以外的所有文件类型,例如图片、CSS、JS 文件等。如果写文章时需要使用到的图片较 ...
阅读全文 »

在群辉中给 Docker 容器设置代理

发表于 2023-06-08 | 分类于 网络 | | 阅读次数:
字数统计: 1k | 阅读时长 ≈ 1 mins.
有时候需要在 Docker 容器中调用一些被墙了的服务,这时就需要给容器设置代理。 步骤1:部署 Clash在群辉中部署一个 Clash 服务,可以参考 在群辉上解决 Docker Hub 加载不出来的问题 这篇文章,里面有详细介绍。 步骤2:设置 Docker 容器的代理然后新建一个容器,选择需要 ...
阅读全文 »

在群辉上解决 Docker Hub 加载不出来的问题

发表于 2023-06-05 | 分类于 网络 | | 阅读次数:
字数统计: 4k | 阅读时长 ≈ 4 mins.
群辉上有个 Docker 套件,内置了 Docker Hub,可以方便地从 Docker Hub 下载镜像。但是在国内,因为不可说的原因,这个 Docker Hub 加载不出来,如下图所示,于是开始着手解决这个问题。 第一步:尝试使用 Docker Hub 镜像在网上搜索了 Docker Hub ...
阅读全文 »

详解 Codable 的用法和原理

发表于 2022-09-13 | 分类于 Swift | | 阅读次数:
字数统计: 54k | 阅读时长 ≈ 54 mins.
Codable 是什么Codable 本身就是个类型别名 1typealias Codable = Decodable & Encodable 代表一个同时符合 Decodable 和 Encodable 协议的类型,即可解码且可编码的类型。 Codable 也可以代表苹果为 Swift 开 ...
阅读全文 »

探索 Objective-C 的对象所有权修饰符

发表于 2022-09-08 | 分类于 Objective-C | | 阅读次数:
字数统计: 22k | 阅读时长 ≈ 22 mins.
引言大家都知道,Objective-C 有 4 个对象所有权修饰符(Ownership Qualifier),分别是: 1234__strong__weak__unsafe_unretained__autoreleasing 在日常开发中日常用的最多的就是 __weak,几乎都是为了解决循环引用的 ...
阅读全文 »

iOS 架构小谈

发表于 2020-02-20 | 分类于 架构 | | 阅读次数:
字数统计: 589 | 阅读时长 ≈ 1 mins.
写了这么多年的 iOS,觉得最佳架构其实就是 MVC,其它什么 MVP、MVVM、VIPER 什么的都是扯淡的,我曾经写过两年多 MVVM,最后感觉就是把简单事情搞复杂了。 MVC 结构的代码,可读性和可维护性远超其它架构。MVC 架构的学习成本远低于其它架构,新人都能直接上手。 为啥还有很多人说 ...
阅读全文 »

HTTPS 原理详解

发表于 2018-05-14 | 分类于 网络 | | 阅读次数:
字数统计: 7k | 阅读时长 ≈ 7 mins.
为什么需要 HTTPS?如今,HTTPS 已经渐渐成为主流,很多大型网站都已经全站 HTTPS 化。那么有了 HTTP 后为什么还需要有 HTTPS 呢?——为了解决 HTTP 的不足。 HTTP 的不足之处 通信内容使用明文——内容可能被窃听 不验证通信方的身份——可能遭遇伪装 无法验证报文的完 ...
阅读全文 »

使用 pyenv 来管理 Python 版本

发表于 2018-02-20 | 分类于 Python | | 阅读次数:
字数统计: 2.8k | 阅读时长 ≈ 3 mins.
macOS 系统自带的 Python 版本时 2.7.x,最新版本的 Python 是 3.6.x。由于 Python 2 和 Python 3 都需要用到,因此需要一个工具能让电脑中的 Python 可以多版本共存。 pyenv 是个不错的 Python 版本管理工具。 安装 pyenv在 mac ...
阅读全文 »

分析 Block 的实现方式

发表于 2018-02-19 | 分类于 Objective-C | | 阅读次数:
字数统计: 18k | 阅读时长 ≈ 18 mins.
通过 clang 来研究 Block 的实现clang 是 Objective-C 的编译器前端,用它可以将 Objective-C 代码转换为 C/C++ 代码,然后可以来分析 Objective-C 中的一些特性是怎么实现的。 首先创建一个命令行应用程序,在 main.m 中,修改 m ...
阅读全文 »

C 指针和 id 的转换,理解 Toll-Free Bridge

发表于 2018-02-17 | 分类于 Objective-C | | 阅读次数:
字数统计: 9k | 阅读时长 ≈ 9 mins.
id 和 void * 类型的相互转换__bridge通过 __bridge 桥接,id 和 void * 就能够相互转换。__bridge 为直接转换,不会对引用计数做特殊处理。 __bridge 转换其的安全性与赋值给 __unsafe_unretained 修饰符相近,甚至会更低。如果管理不注 ...
阅读全文 »

GCD 中那些你可能不熟悉的知识

发表于 2018-02-17 | 分类于 Objective-C | | 阅读次数:
字数统计: 38k | 阅读时长 ≈ 38 mins.
dispatch_get_global_queue 的参数的含义dispatch_get_global_queue 用来从 GCD 的全局队列池中获取一个全局的队列。 全局队列都是并发队列。 第一个参数第一个参数在 iOS 7 及更低版本上表示优先级,有四种取值,定义如下: 1234#define ...
阅读全文 »

Objective-C 原子属性

发表于 2018-02-08 | 分类于 Objective-C | | 阅读次数:
字数统计: 12k | 阅读时长 ≈ 12 mins.
Objective-C 在声明一个属性的时候,想必大家都是不用经过大脑思考就会写 @property (nonatomic, ...。 我们都知道属性可以是 nonatomic 也可以使 atomic 的,但是好像几乎所有属性在声明的时候 nonatomic,atomic 的属性几乎没出现过。ato ...
阅读全文 »

用 Runtime 自己动手实现 KVO —— 探究 KVO 的底层实现

发表于 2018-02-07 | 分类于 Objective-C | | 阅读次数:
字数统计: 25k | 阅读时长 ≈ 25 mins.
KVO 的实现原理在 Objective-C 中,用 KVO 可以很方便的观察某个属性的值的变化,一有变化可以立刻响应,虽然滥用 KVO 容易踩坑,但是在很多情形下,KVO 还是很好用的。接下来我们来看一看 KVO 是怎么实现的。 我们来写一个例子来研究,创建一个 Simple App 项目,首先写 ...
阅读全文 »

Method Swizzling 实现不修改任何代码替换掉某个方法的实现

发表于 2018-02-06 | 分类于 Objective-C | | 阅读次数:
字数统计: 5.9k | 阅读时长 ≈ 6 mins.
Method Swizzling 和应用举例直接从例子开始讲起。 例如 NSURL 的 URLWithString: 方法,通过它来创建 NSURL 时,如果输入的参数不合法,会导致创建出来的对象为 nil,从而导致后面的程序异常。 当然,我们需要保证输入的参数一定是不合法的。但是有的时候我们希望无 ...
阅读全文 »

Objective-C Runtime(三):编译器

发表于 2018-02-05 | 分类于 Objective-C | | 阅读次数:
字数统计: 18k | 阅读时长 ≈ 18 mins.
Objective-C Runtime 包含两大组件——编译器和Runtime API,本篇探讨一下编译器组件扮演的角色和它的工作原理。 苹果官方文档中介绍了三种和 Runtime 交互的方式: Objective-C 源代码本身。 调用 NSObject 中的方法。 调用包含在 <objc ...
阅读全文 »

Objective-C Runtime(二):动态类型,动态绑定,动态方法决议,内省

发表于 2018-02-01 | 分类于 Objective-C | | 阅读次数:
字数统计: 9.3k | 阅读时长 ≈ 9 mins.
本文介绍了 Objective-C Runtime 的四个重要的概念——动态类型,动态绑定,动态方法决议,内省,为后面的研究打下基础。 动态类型动态类型(Dynamic typing)是指对象的具体类型在运行时才能确定。 在 Objective-C 中,对象的类型可以定义成静态的,也可以定义成动态的 ...
阅读全文 »

Objective-C Runtime(一):Selector 和方法签名

发表于 2018-01-31 | 分类于 Objective-C | | 阅读次数:
字数统计: 6.6k | 阅读时长 ≈ 7 mins.
Selector在日常开发中,会经常接触到 Selector,例如常用到的 Target-Action 模式中,Action 就是一个 Selector 类型。所以 Selector 大家想必都很熟悉。 Selector 是一个字符串,用于指代某个类方法或实例方法。 例如一个类有下面两个方法: 12 ...
阅读全文 »

用 Docker 搭建 Hexo 博客

发表于 2018-01-29 | 分类于 后端 | | 阅读次数:
字数统计: 7.3k | 阅读时长 ≈ 7 mins.
这几年不会 Docker 都不好意思出门见人,传统的方式来搭建 Hexo 博客已经不 cool 了,下面来介绍下怎样用 Docker 来搭建 Hexo 博客。 1. 准备 Hexo 博客源码创建一个目录,把 Hexo 博客源码都放进去,或者直接 cd 到现有的 Hexo 源码目录。 在目录中设置好主 ...
阅读全文 »

Objective-C 奇葩写法合集

发表于 2017-12-05 | 分类于 Objective-C | | 阅读次数:
字数统计: 7.1k | 阅读时长 ≈ 7 mins.
内联复合表达式12345UIView *view = ({ UIView *v = [[UIView alloc] init]; v.backgroundColor = [UIColor whiteColor]; v;}); 在创建对象时,使用内联符合表达式是 ...
阅读全文 »
12<i class="fa fa-angle-right"></i>

35 日志
10 分类
14 标签
RSS
© 2023 晨曦微光 | 154k | 2:34
由 Hexo 强力驱动
|
主题 — NexT.Mist v6.0.2