iOS APP运行时Crash自动修复系统
前言大白(Baymax),迪士尼动画《超能陆战队》中的健康机器人,是一个体型胖胖的充气机器人,因呆萌的外表和善良的本质获得大家的喜爱,被称为“萌神”。 Baymax项目是为了减少开发人员在开发中一些不规范的代码编写造成的内存泄露,界面卡顿,耗电等问题而来的一个监控系统。 现在Baymax迎来了它新的功能:APP运行时Crash自动防护功能,为app的流程顺利运行保驾护航! 下面将详细介绍一下
iOS 渲染原理解析
0. 本文知识目录 1. 计算机渲染原理CPU 与 GPU 的架构对于现代计算机系统,简单来说可以大概视作三层架构:硬件、操作系统与进程。对于移动端来说,进程就是 app,而 CPU 与 GPU 是硬件层面的重要组成部分。CPU 与 GPU 提供了计算能力,通过操作系统被 app 调用。 CPU(Central Processing Unit):现代计算机整个系统的运算核心、控制核心。
如何通过静态分析提高iOS代码质量
随着项目的扩大,依靠人工codereview来保证项目的质量,越来越不现实,这时就有必要借助于一种自动化的代码审查工具:程序静态分析。 程序静态分析(Program Static Analysis)是指在不运行代码的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。(来自百度百科) 词法分析
iOS实习面经(字节美团阿里蘑菇街)
因为时间很久了,记不住太多,只能把记得的写一写总的来说,美团的面试体验最好,字节的速度最快。按照时间顺序,蘑菇街一面,阿里一面,字节一面二面,美团一二面,字节三面。蘑菇街一面是一个小姐姐面的学iOS多久了,为什么学iOS,怎么学的进程和线程的区别weak怎么用,delegate为什么用weakblock与weak,__block怎么用、原理arc原理,weak的实现原理用过category吗,介绍
春招路上孤独的iOSer的心路历程(面经)
献给目前为数不多的春招路上孤独的iOSer:背景: 双非渣一本,2017级大三计算机科班,算法:剑指offer 68题刷了一遍,leetcode 60题。网络、操作系统啥的 跟着书本学习然后Google查了些资料,然后大学期间做过一些有关iOS开发的实践项目。前言: 双非本科菜鸡的春招有些坎坷,还记得第一次面试(2019年12月12号),带有一丝丝紧张的感觉跟字节跳动的一面面试
落魄实习生的iOS字节百度面经
按时间顺序面过这些公司,阿里cbu,人人车,飞猪,蘑菇街,趣头条,网易,百度,美团,京东,字节,收到了满意的offer,跟大家分享一下面经~字节头条部门一面(全程iOS)直接问项目 oc方法调用流程,消息传递以及消息转发流程,动态方法解析,备用接收者,消息转发各个阶段详细问 ,是否会与jspatch冲突.oc 这个类的实例对象占几个字节`@interface` `TestObject&n
我是如何让微博绿洲的启动速度提升30%的
绿洲iOS研发工程师,绿洲ID:收纳箱KeepFit。0. 序言启动是App给用户的第一印象,对用户体验至关重要。试想一个App需要启动5s以上,你还想用它么?最初的工程肯定是没有这些问题的,但随着业务需求不断丰富,代码越来越多。如果放任不管的话,启动时间会不断上涨,最后让人无法接受。本文从优化原理出发,介绍了我是如何通过修改库的类型和Clang插桩找到启动所需符号,然后修改编译参数完成二进制文件
优雅的使用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 线程,它们的职责都是不一样的:★