
iOS日常生活
文章平均质量分 86
光秃秃的程序小生
这个作者很懒,什么都没留下…
展开
-
iOS面试了20几家总结出来的面试题
标题iOS面试题本面试题为个人使用版本,如后续流传出去,请转发的朋友务必注释一下,答案正确性有待商榷,本人的答案不代表权威,仅仅是个人理解。 文章内部有写混乱,将就着看吧。另外大部分图片加载不出来,,MARKDown格式也不太统一(各平台不一样),由于博主太懒不想改,不过不影响最终效果。标题更新日志2020年08月17日 更新了第23条的新的引申,关于NSTimer循环引用的根本原因, 以及优化方案标题一、硬技术篇1.对象方法和类方法的区别?对象方法能个访问成员变量。类方法中不能直接调用转载 2021-07-15 19:50:35 · 1052 阅读 · 0 评论 -
移动开发—ios系列:AFNetworking请求XML
前言:http协定是服务器与客户端交换数据最常见的形式。一般来说,数据格式是JSON,也有XML的状况。JSON格局都会解析,如何解析XML呢?—— 本文是基于AFNetworking3.2.1版本参考资料:https://stackoverflow.com/que…https://stackoverflow.com/que…划重点一般来说,咱们进行HTTP申请,会实例化一个AFHTTPSessionManager对象,并设置一些属性:manager = [AFHTTPSessionMana原创 2021-06-04 13:48:26 · 270 阅读 · 0 评论 -
iOS系列—wakeup in XNU
苹果在iOS13的时候,在内核中退出了一个新的性能掂量指标wakeup,同时因为这个指标而被零碎杀死的利用不可胜数,其中也包含咱们罕用的微信淘宝等。而这个指标齐全是由 XNU 内核统计的,所以咱们很难通过日志等一般伎俩去精确的定位问题,所以这里通过另一种思路去解决这个问题。为什么要统计 wakeup要定位这个问题,首先咱们须要晓得这个指标的目标是什么。XNU 中,对性能的指标有CPU、内存、IO,而wakeup属于 CPU 的性能指标,同时属于 CPU 指标的还有 CPU 使用率,上面是XNU中对其限原创 2021-06-03 14:08:39 · 1060 阅读 · 0 评论 -
移动开发—OC底层-消息发送机制
在类和对象中,我们了解到,方法存放在类中.那么问题来了.方法长啥样呢?method_tstruct method_t { struct big { SEL name; const char *types; MethodListIMP imp; };}从源码中,我们得知objc_class中有一个类型为method_array_t的二位数组的成员methods.扒开method_array_t的类型,我们找到了最终的method_t,就原创 2021-06-02 13:18:32 · 227 阅读 · 0 评论 -
移动开发—分类-Category
分类-Category分类的功能在OC中,我们可以使用分类为类添加方法,属性.也可以覆盖类原有的方法,自己添加新的实现.(说是覆盖,其实不然.在稍后分类加载时间会解释原因)分类的结构const char *name; classref_t cls; WrappedPtr<method_list_t, PtrauthStrip> instanceMethods; WrappedPtr<method_list_t, PtrauthStrip> classM原创 2021-06-01 14:30:10 · 279 阅读 · 0 评论 -
移动开发—iOS系列之-组件化
MGJRouter 蘑菇街组件实现原理方案一 url-block这是蘑菇街中应用的一种页面间调用的方式,通过在启动时注册组件提供的服务,把调用组件使用的url和组件提供的服务block对应起来,保存到内存中。在使用组件的服务时,通过url找到对应的block,然后获取服务。注册[MGJRouter registerURLPattern:@"mgj://detail?id=:id" toHandler:^(NSDictionary *routerParameters) { NSNumber *原创 2021-05-27 14:48:32 · 137 阅读 · 0 评论 -
以iOS实现Pipeline设计模式
前言该文介绍Pipeline设计模式,使用场景,以及如何使用OC语言,用链式语法优雅的将Pipeline串联起来。**Pipeline设计**思想来源于责任链模式,如上图所示,有三个概念:Port是产生数据对象;Pipeline是处理数据对象的管道;Packet是数据包,或者管道的上下文;链路比较长的业务场景,大都可以套入这个模式;例如,开播:用户点击开播按钮产生一个点击事件,那么这个事件可以作为一个Port,用于产生点击事件Port产生数据后,会流向Pipeline,假如开播需原创 2021-05-18 13:58:08 · 188 阅读 · 0 评论 -
移动开发—iOSapp被拒原因汇总
一、 iOS 端常见被拒原因汇总App 内包含分发下载分发功能(引导用户下载 App 等功能)。提供的测试账号无法查看实际功能通过接口返回布尔值判断 App 是否升级,但审核期间该接口不请求审核账号,任何时候在任何 ip 登录看到的都是审核版。提供的登陆账号和密码不对,登陆不上运营填写的营销关键字有问题元数据问题,iPhoneX 截图中 iPhone 壳子是 iPhone7 的,应该是 iPhoneX说明隐私权限的作用。营销文字,某些能力需要资质。此类功能在审核期间都关闭修改隐私权限相关原创 2021-05-14 13:23:49 · 409 阅读 · 0 评论 -
全网独一无二的iOS启动速度优化
启动时间应用启动流程IOS应用的启动可分为pre-main阶段和main()阶段,其中系统做的事情依次是:前主阶段1.1.加载应用的可执行文件1.2.加载动态链接库加载器DYLD(动态加载器)1.3。DYLD递归加载应用所有依赖的dylib(动态库动态链接库)Main()阶段2.1。DYLD调用Main()2.2。调用UIApplicationMain()2.3。调用应用程序将最终运行2.4。调用完成了LaunchingWithOptions启动耗时的测量在进行优化之前,我们首先应该能测量各阶段的原创 2021-05-13 14:40:45 · 167 阅读 · 0 评论 -
全网最新 iOS启动优化知识
本文要是要针对启动优化相关概念和最佳实践的介绍。什么是启动首先来看一下启动类型都有哪几种,以及每种启动类型的特点。启动类型共有三种启动类型,分别为:冷启动、热启动和重新启动,下面为它们的特点。冷启动重启之后。APP 未在 iPhone 的内存中。APP 线程不存在。热启动最近被终止的。APP 部分在内存中。APP 线程不存在。重新启动APP 被暂停(比如按下 home 键)。整个 APP 都在内存中。APP 线程存在。介绍完启动类型,下面来看一下启动共分为几个阶段以及每个阶原创 2021-05-12 15:55:33 · 187 阅读 · 0 评论 -
简单明了的在Spark中做到内存管理与调优
Spark 是基于内存的大数据计算引擎,因此,在编写 Spark 程序或者提交 Spark 任务的时候,要特别注意内存方面的优化和调优。Spark 官方也提供了很多配置参数用来进行内存或 CPU 的资源使用,但是为什么我们要进行这些参数的配置,这些参数是怎么影响到任务执行的,本篇文章将从 Spark 内存管理的原理方面进行分析。一、JVM 内存1.JVM 内存区域划分因为 Spark 任务最终是运行在 java 虚拟机里面的,所以这里先分析一下 JVM 的内存区域划分。JVM 的运行时内存划分主要包括原创 2021-05-10 14:31:03 · 419 阅读 · 0 评论 -
iOS开发用不可思议的代码电量优化(下)
电量测量1.读取官方日志Sysdiagnose。这个方法相对精确一些,有点麻烦的是,我们需要整个获取日志再拿来分析,不太好在线上应用中使用。而且无关数据过多,读取比较艰难。 我们可以读取iOS 电量测试实践来了解细节。2.开发者模式配合Instruments打开Developer选项中的Start Logging —> 断开iphone与PC连接 —> 一系列的用户操作 —> Stop Logging —> 连接iphone与PC, 将电量消耗数据导入Instruments。原创 2021-05-10 13:52:42 · 691 阅读 · 0 评论 -
在iOS 开发者下是如何图片处理与性能优化的呢
图片在计算机世界中怎样被存储和表示?图片和其他所有资源一样,在内存中本质上都是0和1的二进制数据,计算机需要将这些原始内容渲染成人眼能观察的图片,反过来,也需要将图片以合适的形式保存在存储器或者在网络上传送。这种将图片以某种规则进行二进制编码的方式,就是图片的格式。常见的图片格式图片的格式有很多种,除了我们熟知的 JPG、PNG、GIF,还有Webp,BMP,TIFF,CDR 等等几十种,用于不同的场景或平台。这些格式可以分为两大类:有损压缩和无损压缩。有损压缩:相较于颜色,人眼对光线亮度信息更原创 2021-05-08 14:02:06 · 262 阅读 · 0 评论 -
一个iOS开发 用不可思议的代码使电量优化 (上)
在现如今的开发中, 电量消耗是一个应用运行效果的一个重要的衡量标准,尤其是直播,运动应用。 设备中的每个硬件模块都会消耗电量。电量的最大消费者是CPU,但这只是系统的一个方面。一个编写良好的应用需要谨慎地使用电能。用户往往会删除耗电量大的应用。 除CPU外,耗电量高、值得关注的硬件模块还包括网络硬件、蓝牙、GPS、麦克风、加速计、摄像头、扬声器和屏幕。 如何降低电量的消耗,是延长使用时间的关键。我们要关注以下:判断电池的剩余电量及充电状态如何分析电源如何在 iOS 应用中分析电源, CPU 和资源.原创 2021-05-06 14:10:18 · 363 阅读 · 0 评论 -
带你探索你所不知道的objc arc
ARC or not?Automatic Reference Counting是objc发展以来相当重要的一个进步对于开发者,任何能降低开发难度,简化代码的功能,我们都应该去了解和使用。我们应该利用一切“偷懒”的机会,将软件开发的复杂度分解并控制在一个个小的范围内,使得对于分解后的每一个小的任务,都能被新手掌握和维护。基于简化开发的思想来看,ARC绝对是一个没理由拒绝的技术进步。ARC随着iOS5问世,到现在iOS8都快出了,你还在手动写retain,release么?除了固守思想外,对ARC原创 2021-04-25 14:13:19 · 119 阅读 · 0 评论 -
iOS 动态化的故事
今天聊聊 iOS 动态化的故事。问题在开发模式上,web 的方式是比较先进的,有各种优点,包括跨平台/UI开发效率高,最重要的是可以时刻保证用户看到的程序是最新的,没有版本概念,整个系统时刻保持在掌握之中,而客户端开发模式相对 web 开发是一种倒退,客户端做不到这样的动态化,无法随时更新,目前一个客户端程序要更新成本是很高的,需要发布版本,也无法保证所有人都能更新到这个版本,这是最大的弱点,也是非常大的一块需求。原因为什么会有这种倒退,最主要原因是:苹果引领的体验优先规则。在 iPhone 出现转载 2021-04-22 13:57:58 · 218 阅读 · 0 评论