iOS开发
文章平均质量分 72
依旧风轻
葵花成海,你在不在
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
如何在 POST 请求中使用 QueryParameters ?
在 `POST` 请求中,`parameters` 参数确实会被放在请求体中。这是 AFNetworking 的默认行为。请求序列化器的类型决定了 `parameters` 如何被序列化(例如,JSON 或 URL 编码格式)。原创 2024-08-18 21:24:40 · 648 阅读 · 0 评论 -
一定要了解 AFNetworking 中 AFHTTPSessionManager 的默认 Serializer
通过 `[AFHTTPSessionManager alloc] init]` 创建的 `manager` 实例,其 `requestSerializer` 默认为 `AFHTTPRequestSerializer`,而 `responseSerializer` 默认为 `AFJSONResponseSerializer`。这些默认值在大多数情况下是足够的,但你可以根据需要对其进行自定义设置。原创 2024-08-18 21:01:08 · 594 阅读 · 0 评论 -
从 SearchPath 说起
NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);原创 2024-08-16 00:01:21 · 1521 阅读 · 0 评论 -
URLSession之初窥门径
`NSURLSession` 于 2013 年随 iOS 7 的发布一起面世,苹果将其定位为 `NSURLConnection` 的替代者。我们使用最广泛的第三方框架如 `AFNetworking` 和 `SDWebImage` 的最新版也都已经全面切换至 `NSURLSession`。原创 2024-08-12 22:49:09 · 579 阅读 · 0 评论 -
NSURLSessionTaskMetrics 是什么 ? 如何使用 ?
`NSURLSessionTaskMetrics` 是 iOS 中 `NSURLSession` 框架的一部分,用于收集和报告一个 `NSURLSessionTask`(如数据任务、下载任务或上传任务)执行时的性能指标。`NSURLSessionTaskMetrics` 提供了有关请求的详细信息,这些信息对于分析和优化网络请求的性能非常有用。原创 2024-08-12 17:01:37 · 854 阅读 · 0 评论 -
iOS开发中, https 请求的 dns 解析阶段, 域名解析的请求地址是怎样获取的 ?
在 iOS 中,HTTPS 请求的 DNS 解析过程由系统自动处理,具体使用哪个 DNS 服务器地址,取决于设备的网络配置,通常是通过 DHCP 自动获取的 DNS 服务器地址。如果开发者或用户在网络设置中指定了自定义的 DNS 服务器,系统会使用该地址进行 DNS 解析。原创 2024-08-11 15:41:18 · 1353 阅读 · 0 评论 -
怎样实现DNS劫持, 其原理是什么 ?
DNS 劫持是一种网络攻击方式,攻击者通过篡改 DNS 解析的过程,将用户的域名解析请求指向错误的 IP 地址,从而达到重定向用户流量、拦截通信或执行恶意行为的目的。原创 2024-08-11 15:17:20 · 2127 阅读 · 0 评论 -
NSURLSession 使用 sharedSession 与 defaultSessionConfiguration 的区别
适用于简单的网络请求,无需自定义配置。: 适用于复杂的网络请求,允许更高的定制化。: 使用,提供灵活的网络请求配置能力。选择哪种方式取决于你的需求。如果你的应用需要处理复杂的网络请求或自定义配置,是更合适的选择。对于简单的网络请求,则是一个快速且简便的解决方案。原创 2024-08-11 13:15:33 · 593 阅读 · 0 评论 -
GCD异步与同步任务执行顺序分析
在iOS开发中,理解GCD(Grand Central Dispatch)任务的执行顺序对编写高效和安全的多线程代码至关重要。本文将通过一段代码示例,分析在主线程和非主线程上执行异步和同步任务时的输出顺序。原创 2024-07-23 01:36:51 · 443 阅读 · 0 评论 -
iOS应用冷启动优化,可以做哪些事情
iOS应用冷启动优化,可以做哪些事情原创 2024-07-22 00:20:27 · 743 阅读 · 0 评论 -
iOS开发中的离屏渲染
在 iOS 开发中,离屏渲染(Offscreen Rendering)指的是在屏幕外进行图形渲染操作,而不是直接在当前屏幕显示的内容上进行渲染。离屏渲染通常会创建一个新的缓冲区,绘图操作会在这个缓冲区中完成,然后再将结果合成到主屏幕缓冲区中。原创 2024-07-15 12:05:20 · 1204 阅读 · 0 评论 -
NSTimer的运行机制
`NSTimer` 是一个用于在 iOS 和 macOS 应用中定时执行任务的类。它的运行机制主要依赖于 run loop。原创 2024-07-10 14:19:04 · 901 阅读 · 0 评论 -
iOS 开发中,异步渲染和异步绘制
在 iOS 开发中,异步渲染(Asynchronous Rendering)和异步绘制(Asynchronous Drawing)虽然有相似之处,但它们并不是完全相同的概念。原创 2024-07-10 13:59:55 · 2029 阅读 · 0 评论 -
selfClass 与 superClass 的区别
在 Objective-C 中,`[self class]` 和 `[super class]` 都用于获取对象的类信息,但它们在运行时的行为略有不同。理解它们的区别有助于更好地掌握 Objective-C 的消息传递机制和继承关系。原创 2024-07-08 22:19:50 · 516 阅读 · 0 评论 -
Bugly的底层是怎么实现的
Bugly 是一款专业的移动应用质量监控工具,主要用于捕捉应用的崩溃、ANR 和卡顿。它通过注册信号处理器和未捕获异常处理器来捕捉崩溃信息,收集详细的堆栈、线程和环境信息。崩溃信息会先保存在本地,并在下次启动或网络恢复时上传到 Bugly 服务器。服务器会对数据进行解析和聚合,生成详细的报表和警报。除了崩溃捕获,Bugly 还提供性能监控功能,包括启动时间、卡顿和内存使用情况。原创 2024-07-08 10:28:21 · 1656 阅读 · 0 评论 -
Bugly并非无所不能
在 iOS 应用因为内存占用过大而被系统 killed 的情况下,Bugly 以及大多数崩溃报告工具是无法捕获到这种类型的崩溃信息的。原因在于,当系统由于内存压力过大而终止应用时,是直接将应用进程杀死,不会触发常规的崩溃处理流程,如 `NSUncaughtExceptionHandler` 或信号处理器。因此,应用没有机会执行任何代码来记录和上报崩溃信息。原创 2024-07-08 10:05:30 · 1017 阅读 · 0 评论 -
iOS 开发中不常见的专业术语
乐此不疲地把简单的问题复杂化,并把这种XX行为叫作专业。原创 2024-07-08 04:35:24 · 1397 阅读 · 0 评论 -
如何在应用运行时定期监控内存使用情况
在 iOS 应用开发中,实时监控内存使用情况对于优化性能和排查内存泄漏等问题非常重要。本文将介绍如何在应用运行时定期监控内存使用情况,使用 Swift 编写代码并结合必要的工具和库。原创 2024-07-07 19:10:07 · 1483 阅读 · 0 评论 -
iOS 应用内存超过多少会收到系统内存警告 ?
通过合理处理内存警告和优化内存使用,可以显著提升应用的性能和稳定性,减少因内存不足导致的崩溃和卡顿现象。原创 2024-07-07 11:37:42 · 1805 阅读 · 0 评论 -
iOS应用的内存优化
对一个 iOS 项目进行内存优化,可以从多个方面入手,确保应用在不同场景下都能高效稳定地运行。原创 2024-07-07 11:12:03 · 1634 阅读 · 0 评论 -
使用 JavaScriptCore 进行跨语言调用
通过 JavaScriptCore,可以在 Native 代码中执行 JavaScript 代码,并在 JavaScript 中调用 Native 方法,实现跨语言调用。这种双向通信机制使得混合应用程序可以充分利用 JavaScript 和 Native 各自的优势,提升应用的功能性和用户体验。原创 2024-07-04 13:29:40 · 1073 阅读 · 0 评论 -
实现一个优雅的 jsBridge 方案
在 iOS 项目中,有时需要实现 JavaScript 和 Native 代码之间的通信。本文介绍一种优雅的 jsBridge 实现方案,支持互相调用和回调机制,并附带详细的代码和注释。原创 2024-07-04 12:25:49 · 2013 阅读 · 0 评论 -
监听 web 容器内的网络请求(错误的方案)
在 iOS 项目中使用 `WKWebView` 实现的 Web 容器,监听 Web 容器内的网络请求是一个常见需求。可以通过实现 `WKURLSchemeHandler` 协议来处理自定义的 URL scheme,从而拦截和监听网络请求。以下是一个优秀的实现方案原创 2024-07-02 01:51:25 · 785 阅读 · 0 评论 -
依赖注入(Dependency Injection, DI)在 iOS 开发中的应用
依赖注入是一种设计模式,用于解除对象之间的依赖关系。通过依赖注入,一个类所依赖的对象(即依赖)由外部传递给它,而不是在类内部自己创建。这样可以降低类之间的耦合度,提高代码的可维护性和可测试性。原创 2024-06-21 22:06:20 · 2083 阅读 · 2 评论 -
main() 函数执行前,具体会初始化和创建哪些全局变量 ?
大部分全局变量都是在 `main()` 函数执行之前初始化和创建的,以确保程序在启动时拥有正确的运行环境。原创 2024-06-19 05:09:12 · 1235 阅读 · 0 评论 -
深入解析 iOS 应用启动过程:main() 函数前的四大步骤
在开发 iOS 应用时,我们通常会关注 `main()` 函数及其之后的执行逻辑,但在 `main()` 函数之前,系统已经为我们完成了许多重要的初始化工作。这些工作确保了我们的应用能够顺利启动和运行。本文将详细解析在 `main()` 函数执行前,iOS 系统所做的四大步骤。原创 2024-06-19 04:18:41 · 1836 阅读 · 0 评论 -
网络熔断机制(Circuit Breaker)
熔断器通常有三种状态:关闭(Closed)、打开(Open)和半开(Half-Open)。Closed:正常状态,所有请求都会直接发送。Open:熔断状态,所有请求都会直接失败,不会发送实际请求。Half-Open:试探状态,允许部分请求发送,如果成功则恢复到关闭状态,如果失败则返回到打开状态。原创 2024-06-16 17:14:20 · 1025 阅读 · 0 评论 -
正确理解iOS中的同步锁
在 iOS 开发中,同步锁(synchronized lock)是一种用于管理多线程访问共享资源的机制,而不是某一种特定类型的锁。它涵盖了多种具体实现和技术,用于确保同一时间只有一个线程能够访问某个共享资源,从而避免数据竞争和确保数据一致性。这些同步机制的共同目标都是为了在多线程环境中保护共享资源,防止多个线程同时访问导致的竞态条件和数据不一致问题。具体使用哪种同步机制取决于具体的应用场景和需求。总结起来,同步锁是一种机制,其核心思想是通过某种锁的实现来管理多线程对共享资源的访问,确保线程安全。原创 2024-06-09 13:54:04 · 1346 阅读 · 0 评论 -
为什么需要Promises ?
同步"异步操作", 避免Block多层嵌套造成的"回调地狱"原创 2023-07-12 01:04:47 · 200 阅读 · 0 评论 -
符号化的正确姿势
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 · 1363 阅读 · 0 评论 -
dSYM文件是什么 ?
dSYM的全称是, 所以dSYM文件就是, dSYM文件中的每个 debug symbol, 对应了一个关系, 这个关系一端是源代码里真实的符号(类名称、全局变量以及方法和函数名称), 另一端则是其定义的文件号和行号.原创 2023-07-08 23:22:01 · 3449 阅读 · 4 评论 -
根据bundleID查询App信息
已知App的bundleID, 怎样查询应用信息.原创 2023-04-04 17:46:12 · 1797 阅读 · 0 评论 -
CoreLocation的一切
Core Location 提供的服务可以确定设备的地理位置、高度和方向,或者它相对于附近iBeacon设备的位置。该框架使用设备上的所有可用组件收集数据,包括 Wi-Fi、GPS、蓝牙、磁力计、气压计和蜂窝硬件。原创 2023-03-13 21:12:18 · 640 阅读 · 0 评论 -
Swift中的Double转UInt32发生CRASH
译: 如果 source 在向零舍入后超出此类型的范围,则可能会发生运行时错误。原创 2023-03-08 15:15:37 · 789 阅读 · 0 评论 -
初识pthread
//// main.c// POSIX Threads Playground for SQI//// Created by 侯仕奇 on 2022/4/20.//#include <stdio.h>#include <pthread.h>#include <stdlib.h>void *start(char *param) { printf("%s, running the background thread which address原创 2022-04-20 23:57:12 · 182 阅读 · 0 评论 -
利用现有的 UIView 对象直接生成 UIImage 对象
向社交媒体分享图片时经常需要将现有的视图导出为图片对象.通过扩展方法快速生成UIImage对象extension UIView { func sqiScreenshotImage(_ opaque: Bool = true) -> UIImage? { UIGraphicsBeginImageContextWithOptions(self.bounds.size, opaque, 0) if let context = UIGraphicsGetCurr.原创 2021-09-02 01:02:54 · 682 阅读 · 0 评论 -
Swift 和 Objective-C 之间基本数据类型的转换
Swift 和 Objective-C 之间基本数据类型的转换整数之间// 直接使用`as`相互转换, 因为本质上是同一种类型, NSInteger 是 Int 的别名let int_0 = 2 as Intlet int_1 = int_0 as NSIntegerlet int_2 = int_1 as Int浮点数之间// 除了为字面量直接指定类型, 必须通过构造器来转换let float_0 = 2 as CGFloatlet float_1 = Float(float_0)原创 2021-08-19 00:22:43 · 659 阅读 · 0 评论 -
swift 中的 NSInteger 类型
NSInteger type in swift在Swift中, NSInteger是Int的别名, 所以它们是同一个基本数据类型, 是完全等同的./* NSObjCRuntime.h Copyright (c) 1994-2012, Apple Inc. All rights reserved.*/public typealias NSInteger = Intpublic var NSIntegerMax: Int { get }...原创 2021-08-19 00:09:22 · 766 阅读 · 0 评论 -
`swift`中字面量的默认类型
swift中字面量的默认类型The default type of literals in swift环境: Apple Swift version 5.4 (swiftlang-1205.0.26.9 clang-1205.0.19.55), macOS Big Sur 11.4Integer 整数// 默认类型为`Int`let integer_0 = 1 // 指定整数字面量的类型为`Int`let integer_1 = 1 as IntFloat 浮点数// 默认类型为原创 2021-08-19 00:03:08 · 211 阅读 · 1 评论 -
swift 中的 as 操作符
The as operator (as 操作符)对于 swift 初学者来说, as操作符尝尝使人困惑.as? operator, 可失败转换操作符 as?表示可失败的转换, 或者叫做可选转换(Optional conversion), 当转换失败, 则返回nil. 常用于Any或者AnyObject向其它类型转换. request { res, _ in if let response = res as? SQISpecifiedClass { // ... } }as!原创 2021-08-18 15:09:12 · 234 阅读 · 0 评论
分享