优雅的使用UITableView
痛点在我们iOS开发中UITableView几乎是所有App都会使用的一个UI控件,因为业务的需要,我们常常会注册多种Cell,然后在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath中就会很自然
iOS 如何抓取线程的“方法调用栈”?
场景:在一些 “性能监控” 的工具中,在检测到App主线程卡顿的时候,可以通过子线程抓取当前时刻所有线程的方法调用堆栈(保存卡顿现场),并在合适的时机(WiFi环境&网络环境较好的时候)把堆栈信息上传到我们的服务端。服务端将堆栈信息过滤分析后,交给客户端做优化处理。 这样,就能较好的提高用户的体验,并及时发现线上环境下的问题。同时,也可以及时发现问题,及时优化我们的代码
2020年面试:整理出一份高级iOS面试题
1、NSArray与NSSet的区别?NSArray内存中存储地址连续,而NSSet不连续NSSet效率高,内部使用hash查找;NSArray查找需要遍历NSSet通过anyObject访问元素,NSArray通过下标访问2、NSHashTable与NSMapTable?NSHashTable是NSSet的通用版本,对元素弱引用,可变类型;可以在访问成员时copyNSMapTable是NSDic
在 iOS 里 100% 还原 Sketch 实现的阴影效果
还原不了设计师视觉稿的开发者不是一个合格的页面仔。Sketch 是 APP 设计的神器,大部分设计师都选择它作为 APP 界面的设计工具。在 Sketch 里设置一个阴影,效果图和参数如下:Sketch 里的效果Sketch 里的阴影参数开发实现在 iOS 里实现阴影的方式是使用 UIView 的 layer 属性。layer 里与阴影有关的设置是以下几个属性:shadowPathshadowCo
iOS启动优化(一)性能检测
项目启动优化是每个APP都可以接入的技术,只不过针对不同的业务逻辑我们需要有不一样的解决方案,因为有大部分人的“优化”,是在处理自己放荡不羁的代码。既然这里我们要讨论启动优化,那么我们从启动检测开始。启动检测一般我们会以main函数作为分割点,main之前和main之后。main之前称为per-ma
一个易迁移、兼容性高的 Flutter 富文本方案
背景在闲鱼消息体系中,富文本在 UI 侧占了非常大的比重。最近消息部分在整体 Flutter 化,如何解决 Flutter 侧富文本问题,成为了项目早期的风险点。在 Native 中,消息使用了 HTML 协议来承载富文本的解析与展示,由于消息的历史数据有落库的特性,我们必须在 Flutter 侧兼容这种协议。对于 Flutter,我们是否可以在兼容的基础上,进行能力的扩充与完善?当前闲鱼也在升级
iOS 可用的热更新、热修复方案
如何写好一个UITableView
如果你觉得 `UITableViewDelegate` 和 `UITableViewDataSource` 这两个协议中有大量方法每次都是复制粘贴,实现起来大同小异;如果你觉得发起网络请求并解析数据需要一大段代码,加上刷新和加载后简直复杂度爆表,如果你想知道为什么下面的代码可以满足上述所有要求:**系好安全带,上车!**MVC在讨论解耦之前,我们要弄明白 MVC 的核心:控制器(以下简称 C)负责
今日头条 Flutter 架构实践
移动跨平台技术探究◆ 为什么需要跨平台?◆ 跨平台技术是如何发展起来的?◆ 跨平台技术选型有哪些?◆ Flutter有什么独特优势(为什么选择Flutter)?◆ 为什么说Flutter是高性能的,体现在哪里?Flutter引擎原理剖析先来看看Flutter的技术架构图:C++引擎四个核心线程Flutter 里四个核心线程:平台线程、UI 线程、GPU 线程、IO 线程,它们的职责都是不一样的:★