自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

侯仕奇的博客

葵花成海,你在不在

  • 博客(289)
  • 资源 (2)
  • 问答 (7)
  • 收藏
  • 关注

原创 符号化的正确姿势

symbolicatecrash 是一个 exec (可执行文件), Xcode自带, iOS 15 之前的系统产生的 crash report, 可以直接被整个符号化, 文件路径可以通过。iOS 15 及之后的版本产生的 crash report, 格式有变, 已经无法使用 symbolicatecrash 符号化。使用条件: crash report 对应的 Archive 包是在本机构建的。将 .ips crash report 文件拖放到。中, 然后导出 .crash 符号化文件.

2023-07-10 01:13:25 978

原创 dSYM文件是什么 ?

dSYM的全称是, 所以dSYM文件就是, dSYM文件中的每个 debug symbol, 对应了一个关系, 这个关系一端是源代码里真实的符号(类名称、全局变量以及方法和函数名称), 另一端则是其定义的文件号和行号.

2023-07-08 23:22:01 2248 4

原创 结束 guard else 只能使用 return ?

如果一个或者多个条件不成立,可用 guard 语句来退出当前作用域 (guard所在的作用域)。, guard所在的方法或者函数并不一定结束, 很多人没有意识到这一点!当 return 被执行, 程序只是退出。

2023-07-07 00:04:09 183

原创 当属性观察的对象是结构体

当 struct 中的某个属性被赋值, 会生成一个新的 struct 来替换旧的 struct, 新的 struct 包含新的属性?会响应 struct 属性的变化?因为 struct 是。

2023-07-05 00:05:02 126

原创 有哪些 shell 需要了解 ?

It combines features from both ksh and tcsh, offering functionality such as programmable command-line completion, extended file globbing (文件通配), improved variable/array handling, and themeable prompts (主题化提示).The shell’s name is an acronym (首字母缩拼词) for。

2023-04-09 17:52:00 515

原创 根据bundleID查询App信息

已知App的bundleID, 怎样查询应用信息.

2023-04-04 17:46:12 1154

原创 Swift的 ?? 运算符

Swift 中的??运算符, 官方称之为, 中文常被译作空合运算符在表达式a??b中, 将对可选类型 a 进行空判断,如果 a 包含一个值就进行解包,否则就返回一个默认值 b。表达式 a 必须是 Optional 类型。默认值 b 的类型必须要和 a 存储值的类型保持一致。// 无疑空合运算符(??)提供了一种更为优雅的方式去封装条件判断和解包两种行为,显得简洁以及更具可读性。a!= nil?a!: b注意如果 a 为非空值(non-nil),那么值 b 将不会被计算。这也就是所谓的短路求值。

2023-03-28 22:52:06 566

原创 Category In Objective-C

Category, 中文名: 分类, Objective-C 2.0中新增的语言特性

2023-03-17 22:47:46 1061

原创 规并排序(Swift版本)

时间复杂度为O(nlogn);适合大规模的数据排序;相比于冒泡排序、插入排序、选择排序这三种排序算法, 更加常用;用到了分治思想(即分而治之, 英文叫 “Divide and conquer”),非常巧妙;英文名称:Merge Sort;分治思想, 在很多领域都有广泛的应用,例如算法领域有分治算法(归并排序、快速排序都属于分治算法,二分法查找也是一种分治算法);分治算法一般都是用"递归"来实现的 (分治是一种解决问题的处理思想,递归是一种编程技巧);

2023-03-06 00:15:26 447

原创 利用无缝桥接深入理解Block的内部实现

深入理解Block的内部实现在Block内部访问外部变量//// main.m// SQIPlayground//// Created by 侯仕奇 on 2020/5/26.// Copyright © 2020 零下引力. All rights reserved.//#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool {

2020-05-27 10:06:45 374

原创 如何在 POST 请求中使用 QueryParameters ?

在 `POST` 请求中,`parameters` 参数确实会被放在请求体中。这是 AFNetworking 的默认行为。请求序列化器的类型决定了 `parameters` 如何被序列化(例如,JSON 或 URL 编码格式)。

2024-08-18 21:24:40 232

原创 一定要了解 AFNetworking 中 AFHTTPSessionManager 的默认 Serializer

通过 `[AFHTTPSessionManager alloc] init]` 创建的 `manager` 实例,其 `requestSerializer` 默认为 `AFHTTPRequestSerializer`,而 `responseSerializer` 默认为 `AFJSONResponseSerializer`。这些默认值在大多数情况下是足够的,但你可以根据需要对其进行自定义设置。

2024-08-18 21:01:08 286

原创 从 SearchPath 说起

NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);

2024-08-16 00:01:21 1172

原创 URLSession之初窥门径

`NSURLSession` 于 2013 年随 iOS 7 的发布一起面世,苹果将其定位为 `NSURLConnection` 的替代者。我们使用最广泛的第三方框架如 `AFNetworking` 和 `SDWebImage` 的最新版也都已经全面切换至 `NSURLSession`。

2024-08-12 22:49:09 357

原创 NSURLSessionTaskMetrics 是什么 ? 如何使用 ?

`NSURLSessionTaskMetrics` 是 iOS 中 `NSURLSession` 框架的一部分,用于收集和报告一个 `NSURLSessionTask`(如数据任务、下载任务或上传任务)执行时的性能指标。`NSURLSessionTaskMetrics` 提供了有关请求的详细信息,这些信息对于分析和优化网络请求的性能非常有用。

2024-08-12 17:01:37 387

原创 iOS开发中, https 请求的 dns 解析阶段, 域名解析的请求地址是怎样获取的 ?

在 iOS 中,HTTPS 请求的 DNS 解析过程由系统自动处理,具体使用哪个 DNS 服务器地址,取决于设备的网络配置,通常是通过 DHCP 自动获取的 DNS 服务器地址。如果开发者或用户在网络设置中指定了自定义的 DNS 服务器,系统会使用该地址进行 DNS 解析。

2024-08-11 15:41:18 488

原创 怎样实现DNS劫持, 其原理是什么 ?

DNS 劫持是一种网络攻击方式,攻击者通过篡改 DNS 解析的过程,将用户的域名解析请求指向错误的 IP 地址,从而达到重定向用户流量、拦截通信或执行恶意行为的目的。

2024-08-11 15:17:20 618

原创 NSURLSession 使用 sharedSession 与 defaultSessionConfiguration 的区别

适用于简单的网络请求,无需自定义配置。: 适用于复杂的网络请求,允许更高的定制化。: 使用,提供灵活的网络请求配置能力。选择哪种方式取决于你的需求。如果你的应用需要处理复杂的网络请求或自定义配置,是更合适的选择。对于简单的网络请求,则是一个快速且简便的解决方案。

2024-08-11 13:15:33 326

原创 不更新索引库, 可以直接使用新的版本么

不更新索引库, 可以直接使用新的版本么

2024-08-09 17:06:40 362

原创 git tag

git tag 相关命令

2024-08-09 16:27:21 395

原创 class_copyIvarList 之下,没有隐藏的属性

在 Objective-C 中,`class_copyIvarList` 是一个运行时函数,用于获取指定类的所有实例变量(ivar)的列表。该函数返回一个指向 `Ivar` 结构体的指针数组,其中每个 `Ivar` 结构体表示一个实例变量。

2024-07-24 01:10:06 772

原创 借用 object_getClass 窥测神器

创建一个 `NSArray` 对象和一个 `NSMutableArray` 对象,并分别对其执行 `object_getClass` 方法。

2024-07-24 00:04:15 396

原创 分析一个实例对象的内存布局和大小

详细说明如何分析一个实例对象的内存布局和大小

2024-07-23 20:43:04 398

原创 GCD异步与同步任务执行顺序分析

在iOS开发中,理解GCD(Grand Central Dispatch)任务的执行顺序对编写高效和安全的多线程代码至关重要。本文将通过一段代码示例,分析在主线程和非主线程上执行异步和同步任务时的输出顺序。

2024-07-23 01:36:51 193

原创 理解 Objective-C 中 `+load` 方法的执行顺序

在 Objective-C 中,`+load` 方法是在类或分类被加载到内存时调用的。它在程序启动过程中非常早的阶段执行,用于在类或分类被加载时进行一些初始化工作。理解 `+load` 方法的执行顺序对于编写可靠的 Objective-C 代码非常重要。本文将详细探讨 `+load` 方法在类、子类和分类中的执行顺序。

2024-07-22 23:57:57 2630

原创 iOS应用冷启动优化,可以做哪些事情

iOS应用冷启动优化,可以做哪些事情

2024-07-22 00:20:27 461

原创 iOS开发中的离屏渲染

在 iOS 开发中,离屏渲染(Offscreen Rendering)指的是在屏幕外进行图形渲染操作,而不是直接在当前屏幕显示的内容上进行渲染。离屏渲染通常会创建一个新的缓冲区,绘图操作会在这个缓冲区中完成,然后再将结果合成到主屏幕缓冲区中。

2024-07-15 12:05:20 756

原创 Objective-C 中字符串的保存位置

在 Objective-C 中,字符串常量和动态创建的字符串在内存中的保存位置通常是不一样的。这主要是因为它们的创建方式不同,导致它们在内存管理上的处理方式也不同。

2024-07-12 10:34:40 895

原创 copy 和 mutableCopy 有点乱

copy 和 mutableCopy 有点乱

2024-07-11 23:38:50 548

原创 NSTimer的运行机制

`NSTimer` 是一个用于在 iOS 和 macOS 应用中定时执行任务的类。它的运行机制主要依赖于 run loop。

2024-07-10 14:19:04 580

原创 iOS 开发中,异步渲染和异步绘制

在 iOS 开发中,异步渲染(Asynchronous Rendering)和异步绘制(Asynchronous Drawing)虽然有相似之处,但它们并不是完全相同的概念。

2024-07-10 13:59:55 1272

原创 NSObject‘s MetaClass 的 super_class 指向谁 ?

在 Objective-C 运行时系统中,`NSObject` 是所有类的根类。为了理解 `NSObject` 的元类(MetaClass)以及它的 `super_class` 指针指向谁,我们需要理解元类的继承关系。

2024-07-10 13:06:01 433

原创 objc_object 与 objc_class 是一定要了解的底层结构

在 Objective-C 中,`objc_object` 和 `objc_class` 是运行时系统的核心结构,用于表示对象和类。理解它们的结构和关系对于掌握 Objective-C 的运行时机制非常重要。

2024-07-10 12:02:42 1201

原创 Objective-C 中的 isa 不再是简单的结构体指针

在 Objective-C 中,`isa` 指针是对象和类之间的重要桥梁。它不仅帮助运行时系统识别对象的类型,还参与了一些内存和性能优化。本文将深入讲解 `isa` 指针的内存结构,包括其在早期和现代实现中的演变。

2024-07-10 11:19:52 999

原创 92. 反转链表 II (Swift 版本)

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left

2024-07-09 14:32:15 305

原创 selfClass 与 superClass 的区别

在 Objective-C 中,`[self class]` 和 `[super class]` 都用于获取对象的类信息,但它们在运行时的行为略有不同。理解它们的区别有助于更好地掌握 Objective-C 的消息传递机制和继承关系。

2024-07-08 22:19:50 366

原创 iOS 开发者的 Flutter 入门课

作为一名 iOS 开发者,入门 Flutter 需要了解一些新的工具和概念,但也能利用你已有的知识和技能。以下是一个详细的入门指南,帮助你快速上手 Flutter

2024-07-08 22:04:26 1142

原创 Flutter 是如何实现的 ?

Flutter 是由 Google 开发的一个开源 UI 软件开发工具包,用于构建跨平台的应用程序。Flutter 的核心理念是提供一个高度可定制、快速和现代的 UI 框架,它允许开发者使用一套代码库构建 Android、iOS、Web 和桌面应用程序。

2024-07-08 20:25:18 1135

原创 Bugly的底层是怎么实现的

Bugly 是一款专业的移动应用质量监控工具,主要用于捕捉应用的崩溃、ANR 和卡顿。它通过注册信号处理器和未捕获异常处理器来捕捉崩溃信息,收集详细的堆栈、线程和环境信息。崩溃信息会先保存在本地,并在下次启动或网络恢复时上传到 Bugly 服务器。服务器会对数据进行解析和聚合,生成详细的报表和警报。除了崩溃捕获,Bugly 还提供性能监控功能,包括启动时间、卡顿和内存使用情况。

2024-07-08 10:28:21 544

原创 Bugly并非无所不能

在 iOS 应用因为内存占用过大而被系统 killed 的情况下,Bugly 以及大多数崩溃报告工具是无法捕获到这种类型的崩溃信息的。原因在于,当系统由于内存压力过大而终止应用时,是直接将应用进程杀死,不会触发常规的崩溃处理流程,如 `NSUncaughtExceptionHandler` 或信号处理器。因此,应用没有机会执行任何代码来记录和上报崩溃信息。

2024-07-08 10:05:30 578

Objective-C, Category, 实现分析, 源代码

Objective-C, Category, 实现分析, 源代码

2023-03-17

分类中添加属性_实例代码

分类中添加属性_实例代码

2016-11-21

fgets( )和fputs( )(建议用其完全代替gets和puts函数)

很早之前,本人开始接触C语言的时候整理的笔记,包含了函数fgets( )和fputs( )的总结和使用心得,以及与对应的无f前缀函数的区别分析,现在分享给大家,仅代表个人观点,由于能力有限,难免有纰漏,仅供学习交流.

2016-07-25

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

TA关注的人

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