排序
模块化方案 – BeeHive
为什么使用 BeeHive 在狼人杀项目时,iOS 团队有 9 个人协作开发,如果没有一个好的模块化方案支撑,诸如代码冲突 / 逻辑复用等问题将占用不少开发时间,势必面临效率问题。当时的解决方案,就...
一探究竟:iOS 开发中的内联函数优化技术
前言 在iOS应用开发中,优化程序性能是一个非常重要的问题。内联函数(Inline Function)技术是一种常用的优化技术之一,可以将函数调用操作在编译期间替换为函数实现的代码,从而避免了函数调...
iOS 下载多文件管理
我正在参加「掘金·启航计划」 前言 项目自从接入 unity 后,关于资源方面下载数据就增多了,下载种类也变的不一样了。以前手动下载,直接调一下封装好的的 API 就好,也没什么难度,但现在又说...
iOS crash问题汇总(持续更新)
前言 对于iOS开发来说,日常空闲做得最多的事(除了摸鱼)就是解决上报的crash了。有的crash的解决还是非常考验能力的,解决完疑难crash也非常有成就感。所以想记录自己在解决crash过程中的思路...
iOS | GCDTimer 解读和应用
前言 在iOS开发中,大家肯定用过不少定时器,NSTimer是我们开发中用的最多的,当然,说起精度更好的,那肯定是GCDTimer了,那么GCDTimer为什么比NSTimer更准确?它的原理和应用是怎样的?我根据...
UICollectionView自定义layout实现按需算高
更多精彩内容,欢迎关注作者微信公众号:码工笔记 最近遇到一个需要对UICollectionView自定义layout的情况,之前对这块不太熟悉,研究了一下,在此记录一下结论。 一、背景 考虑以下场景: 每个...
iOS中的内存管理|ARC
iOS 采用什么内存管理方式 在 iOS 中,采用自动引用计数(ARC,Automatic Reference Counting)机制来进行内存管理,让编译器来帮助内存管理,无需程序员手动键入 retain、release 等代码进行内...
Swift 最佳实践之 Generics
Swift 作为现代、高效、安全的编程语言,其背后有很多高级特性为之支撑。 『 Swift 最佳实践 』系列对常用的语言特性逐个进行介绍,助力写出更简洁、更优雅的 Swift 代码,快速实现从 OC 到 Swi...
iOS |关于触摸事件的传递机制以及响应流程
前言 平日我们在玩手机,当我们的手指点击的当人手在点击屏幕时,系统会根据我们的手指动作产生一个触屏事件,这个事件可以是点击、拖动、缩放等手势,我们统称为触屏事件。那么系统是如何根据...
iOS|ARC中performSelector的内存泄漏问题
前言 我们平时开发中,如果使用的是ARC模式,那么一旦使用performSelector去调用函数,就一定会出现下面的内存警告现象。 你可能会疑惑,只不过是用了 “performSelector:” 去调用方法,为什么...
iOS 学习之旅 – OC 篇
不知不觉来微信事业群差不多也快一年了,自己学习 iOS 也已有半年,在此记录一下自己的学习过程。很多同学可能想知道从 Android 转到 iOS 公司给了多久的缓冲?大概是一周的样子,那时我还在做 ...
OC底层原理(十四)类扩展与关联对象
一、类扩展 类扩展extension在我们的开发过程中其实经常使用的,下图红框部分就是一个ViewController的类扩展。 图: 类扩展实际上是一个特殊的分类,也称作匿名分类,创建的类扩展只有.h文件,...
iOS 获取任意线程堆栈信息
缘由: 在程序崩溃的时候很容易获取到堆栈信息,程序员很容易查看到因为哪个函数导致的崩溃,但是卡顿现象和高CPU利用率的时候要查看线程的堆栈信息,系统暂未提供方法,所有有了这篇文章 卡顿...
Weak 变量在对象释放时到底发生了什么?
TLDR: 访问 weak 变量与读取 weak 变量的内存是两回事。区别见下图。 >= iOS 16 苹果提供了指定类在特定线程释放的方法,可以做一个参考。 问题提出 真实案例,都脱胎于业务代码,有历史积...
UITableView顶部突然出现一块空白问题
有一天突然测试和我说页面布局有问题,但是在我的测试机中并没有复现这个问题。但是在测试那边确实复现了。 经过调研,如果你发现你的tableview 的section header总是有一片空白,那是因为 在iOS...
Swift 最佳实践之 High Performance
Swift 作为现代、高效、安全的编程语言,其背后有很多高级特性为之支撑。 『 Swift 最佳实践 』系列对常用的语言特性逐个进行介绍,助力写出更简洁、更优雅的 Swift 代码,快速实现从 OC 到 Swi...
Swift 中async/await 简单使用
在 Swift 5.5 中,终于加入了语言级别的异步处理 async/await,这应该会让用回调闭包写异步调用方法时代彻底结束了! 这篇文章就简单总结一下这个功能使用吧。 异步函数 所谓异步,是相对于同步...
Xcode15Beta填坑-修复YYLabel的Crash问题
前言 趁着版本空隙,升级到了Xcode15-Beta2本想提前体验下iOS17。本以为这次升级Xcode能直接运行应该没什么大问题,没曾想到一运行后程序直接Crash了,Crash是在YYLabel下的YYAsyncLayer类里面...
iOS老司机的RunLoop原理探究及实用Tips
本文正在参加「金石计划 . 瓜分6万现金大奖」 前言 iOS中的RunLoop除了面试中跟面试官的探讨, 在实际开发中就没用了吗? 初入iOS开发大门时, 可能很多人都会有这个疑惑. 诚然, 日常的iOS开发中, ...
iOS:NSNotification.Name从OC到Swift的写法演进
前言 在闲来无事的时候,我会抽时间看看Foundation、UIKit等相关库的Swift代码说明与注释。说实话,有的时候看起来真的很乏味,也不容易理解。 不过有的时候也会觉得Apple这么设计API真是书写的...