首页
学习
活动
专区
圈层
工具
发布

【iOS开发】启动时间优化,runloop的一个小技术点

刚接触项目不久,最近产品说有一个点要优化,App的启动页面显示时间太长了。一直在开发其它的app,还真没注意这个点,去看了一下还真是,有的时候启动页面的显示时间能有10s。...排查: 用TimeProfile看了一下启动流程,没发现哪里特别耗时,只有一个添加启动后广告的地方能有个1s多。没怎么关心。...发现一句下面这样的代码。while的条件是要广告图片下载完成。...但是这个while不会阻塞整个程序的运行。 这就有问题了,如果网络不返回,主线程不是会阻塞。直到网络返回。 重写了一下这个广告添加的逻辑,先查看本地是否有缓存好的图片,有就显示,没有就不显示。...同时去服务器拉取要显示的图片地址,并把图片缓存到本地,供下次打开时显示。而不是实时的去下载。 低级错误。原来的同事,只是缓存了一下图片的地址,没有缓存图片本身。

74921
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS 给定一个数组,其中有一个数只出现一次,其他数都出现两次,找到只出现一次的那个数。

    最笨效率最低的办法,两个for循环,找出出现相同数字的次数 - (void)test1{ NSArray *array = @[@"1",@"1",@"2",@"2",@"3",@"3",@"4...:%@", array[i]); } } } 方法二 利用数组比较元素的方法,如果数组中没有出现该元素则添加,如果该元素出现了则删除该元素 - (void)test2{...最后再遍历一次hash,取出对应key的数组有几个元素,如果有一个元素的key则是要找的只出现一次的元素。...mArray addObject:item]; } } NSArray *keyArr = dict.allKeys; // 遍历字典,取出的数组如果只有一个元素的则是我们要找的...NSMutableArray *arr = [dict objectForKey:key]; if (arr.count == 1) { NSLog(@"只出现一个数为

    53620

    微软蓝屏至今仍未完全恢复,官方给出重启 15 次奇葩解决方案!网友:下一步会建议我检查是否插好电源

    欧洲最大的航空公司之一瑞安航空也表示,该公司遇到了“第三方”IT 问题并影响到了航班起飞。 受影响的 Windows 设备在启动时会卡在蓝屏中无法继续。...在规模较小的公司,同一个人身兼数职,这种情况不太可能发生,除非他们能力极其低下。...当我们推出产品更新时,我基本上都在发抖,尤其是因为 iOS/Android 部署基本上不可能调试。在桌面上我们可以让人们删除一个文件来修复 bug,但在移动设备上连这点都几乎办不到。...Action 1 公司联合创始人 Mike Walters 表示,蓝屏死机问题“通常代表出现了内核层级的冲突或者 bug,这类 bug 特别难以诊断和修复,因为其运行在操作系统的最深处,发生在与硬件的具体交互过程当中...如果您在蓝屏错误之前向 PC 添加了新硬件,请关闭 PC、移除该硬件,而后尝试重新启动。如果您在重新启动时遇到问题,可以尝试在安全模式下启动 PC。

    64110

    谁都用过的神技 为什么说重启能解决90%的问题?

    不过伴随着时间流逝,家里的电脑也就慢慢开始闹别扭了:鼠标突然没反应,键盘也没反应,黑屏死机蓝屏更是家常便饭。...但是这时候,只要你轻点一下主机那个小小的重启键,等到熟悉的XP蓝天白云界面的出现,一切都回归正常。 ?...综上所述,系统(不仅仅是Windows,安卓与iOS等等系统都跑不掉)在遇到一些比较容易“绕路”解决的问题,都能比较轻松的处理掉。...这90%的问题里100%是程序员惹的祸 有些程序运行大概是这样的道理:启动时它必须要某个指定的系统资源(比如什么.DLL,什么.sys的),找不到的话它就会引发一连串莫名其妙的问题。 ?...就日常生活来看,重启也是一个最便捷解决大多数问题的方法,所以下次手机电脑遇到问题,不妨重启一下试试?

    1K10

    凭什么说重启电脑能解决90%的问题!?

    不过伴随着时间流逝,家里的电脑也就慢慢开始闹别扭了:鼠标突然没反应,键盘也没反应,黑屏死机蓝屏更是家常便饭。...但是这时候,只要你轻点一下主机那个小小的重启键,等到熟悉的XP蓝天白云界面的出现,一切都回归正常。...综上所述,系统(不仅仅是Windows,安卓与iOS等等系统都跑不掉)在遇到一些比较容易“绕路”解决的问题,都能比较轻松的处理掉。...这90%的问题里100%是程序员惹的祸 有些程序运行大概是这样的道理:启动时它必须要某个指定的系统资源(比如什么.DLL,什么.sys的),找不到的话它就会引发一连串莫名其妙的问题。 ?...就日常生活来看,重启也是一个最便捷解决大多数问题的方法,所以下次手机电脑遇到问题,不妨重启一下试试?

    1.1K3129

    WTG 请慎用 Ai Charger充电软件

    WTG 能够自动匹配PC硬件并安装对应驱动,而不会蓝屏。有关 WTG 的部署和安装在上一篇博文中已有介绍。 Ai Charger 是华硕所推出的一款充电软件。...通过 PC 上的 USB 接口为 iPhone,iPad充电时,速度往往十分缓慢。通过安装 Ai Charger 能够提高 USB 输出电流并加快充电速度,并且避免出现“不在充电”的提示。...reizhi 在安装好 WTG 后,屡次遇到了蓝屏的问题,并提示错误 inaccessible boot device。...目前官网版本已不支持第三方主板,但reizhi有幸找到了无限制的版本,适用于任何主板,并且不会导致 WTG 蓝屏。...虽然是否安装充电加速软件并不会影响 PC 对 iOS 设备的输出电流,但 500mA 的标称值将会导致 iOS 设备无法向 PC 申请足够的电流。

    2.1K30

    谁都用过的神技!为什么说重启能解决 90% 的问题?

    不过伴随着时间流逝,家里的电脑也就慢慢开始闹别扭了:鼠标突然没反应,键盘也没反应,黑屏死机蓝屏更是家常便饭。...但是这时候,只要你轻点一下主机那个小小的重启键,等到熟悉的XP蓝天白云界面的出现,一切都回归正常。...综上所述,系统(不仅仅是Windows,安卓与iOS等等系统都跑不掉)在遇到一些比较容易“绕路”解决的问题,都能比较轻松的处理掉。...这90%的问题里100%是程序员惹的祸   有些程序运行大概是这样的道理:启动时它必须要某个指定的系统资源(比如什么.DLL,什么.sys的),找不到的话它就会引发一连串莫名其妙的问题。 ?...就日常生活来看,重启也是一个最便捷解决大多数问题的方法,所以下次手机电脑遇到问题,不妨重启一下试试?

    77230

    电脑蓝屏深度解决方案:从错误代码到硬件修复全指南

    当你的电脑经常蓝屏怎么办?76%的蓝屏事件预示着潜在的硬件故障或系统损坏风险。...二、电脑蓝屏最简单的修复方法(1)硬件问题造成的蓝屏原因1:内存故障内存条接触不良或损坏会导致数据读写错误,直接触发蓝屏拔下内存条,用橡皮擦拭金手指后重新插紧,或更换新内存测试原因2:硬盘故障硬盘出现坏道...1:驱动程序冲突或损坏电脑蓝屏88%以上是驱动问题,各种各样的驱动出现异常时就容易导致电脑蓝屏。...✅ 金舟驱动大师可以一键修复出现蓝屏的问题,自动化修复方法适合新手使用修复电脑蓝屏的教程:Step1、运行驱动大师,选择“全面体检”,点击“立即扫描”;Step2、软件自动扫描所有驱动、运行库以及各种组件文件...:系统文件修复流程:⭕ 实测表明,这种组合修复对0x0000007E蓝屏解决率达68%,优于单独使用SFC命令(42%)方法2:启动修复与BCD重建无法启动时的急救方案:通过Windows安装盘进入"修复计算机

    4.3K20

    将JZ2440调试串口改成COM2

    如下图所示: 其串口工作原理也是一样的,只是接口不同而已,这里也有一个图示: 搞懂了串口工作时的连线图之后就可以在此基础上进行修改,以便解决实际使用中遇到的问题。...这种情况多发生在有大量数据要显示的时候,比如开机后,执行命令ls -l /dev 可能就会导致电脑蓝屏。于是我将系统换为XP,用了一段时间,没有出现蓝屏,所以应该是驱动的原因。...由于使用习惯的问题,随后我的系统从XP升级到了Win7 ,Win8 ,Win8.1 .在使用JZ2440时,又频繁地出现了蓝屏问题,并且这个PL2303的驱动就像DNW的驱动一样,特别难安装。...到这里,uboot的调试信息打印结束,下面就把所有任务交内核了。有的同学编译好内核,启动时,卡死在这里,只能说明,你的uboot是正常的,内核是否正常就不得而知了。...如果上面4点没有全部修改,则可能出现下面的情况: uboot的信息在com1上面显示,内核的信息则在com2上显示,这是我曾遇到过的。

    1.2K20

    Appium+python自动化(十四)- 与Capability完美懈垢之解读(超详解)

    1、 什么是Capability   在讲capability之前大家是否还记得在讲log时给大家看过的启动时的日志?...在我们的整个启动日志中会出现一些配置信息,其实那些信息就是capability携带的配置信息,如果我们通过代码来启动我们能够看见的配置信息如下: ?   ...(以秒为单位) 例如 60 language (Sim / Emu-only)为模拟器/仿真器设置的语言 例如 fr locale (Sim / Emu-only)为模拟器/仿真器设置的语言环境 例如...eg:caps.setCapability("boundleId","ios.mooc.test"),这个只是一个简单的例子。   ...默认:10 例如, 5 waitForAppScript ios自动化脚本用于确定应用程序是否已启动,默认情况下系统等待页面源不为空。

    4.4K50

    Xamarin 2.0:基于Mono跨平台开发框架

    作为一个跨平台开发框架,在这一框架内,开发 Android 和 iOS 应用可以不用转到 Eclipse 或者额外购买 Mac 并使用 Xcode,而继续在Visual Studio之中使用 C# 与...这样在Android,IOS和Windows之间共享代码就更容易了。Xamarin的Android开发插件已经存在了好多年,现在又提供了支持iOS的插件。...该插件可以很好地与微软的生态系统集成,可以在Mac OS机器的仿真器上进行远程调试和测试。在Mac OS上,因为iOS的现有限制,面向iOS的C#代码会通过AOT编译技术直接编译为ARM汇编代码。...而在Android上,应用程序会转换为IL,启动时再进行JIT编译。...Xamarin的产品简化了针对多种平台的应用开发,包括iOS和Android。

    4.3K80

    Ubuntu手机和电脑安装其他终端Terminal Emulator

    功能一览 轻 简单大方优雅 终端与 GUI 的平滑集成 呼叫时出现,完成后按预定义的热键消失(默认为 F12) Compiz 透明度支持 多标签 大量的调色板 4....ROXTerm 如果想要一个轻量级且高度可定制的终端仿真器,ROXTerm 就是您的最佳选择。它是一个终端仿真器,基于与 gnome-terminal 相同的 VTE 库,具有相似的功能。...它最初的设计目的是比 gnome-terminal 具有更小的占用空间和更快的启动时间,并且它更具可定制性,主要针对经常使用终端的“高级”用户。 5....Eterm 如果正在寻找一款出色且功能强大的终端仿真器,Eterm 是不二之选。 Eterm 是一个彩色 vt102 终端仿真器,旨在替代 XTerm。...Sakura Sakura 是一个只使用 GTK 和 VTE 的终端仿真器。它是一个要求不高的终端仿真器,因此无需安装整个 GNOME 桌面即可拥有一个功能齐全的终端仿真器。

    3.7K20

    模拟仿真|思科建模实验室Cisco Modeling Labs 浅析

    最早的网络仿真模拟器是思科公司推出的BosonNetSim Network Simulator(Boson),Boson是一个模拟Cisco系统网络硬件和软件的应用程序,旨在帮助用户学习Cisco IOS...Boson和PacketTracer属于纯软件模拟仿真,仅支持有限的功能,比如模拟Cisco IOS的命令;针对设备操作系统IOS的虚拟化编译版本(网元)则支持到真实设备的90%的功能特性,因此IOS虚拟化版本...虚拟网络路由实验(VIRL)是面向教育机构和个人的思科专有虚拟网络仿真器。思科建模实验室(CML)则是专为中型和大型企业设计和仿真企业网络而构建的。...虚拟网络路由实验(VIRL)作为付费网络仿真器有一些好处,包括: (1)软件映像访问权限。...AutoNetkit可以在节点启动时自动为它们分配IP地址,它甚至可以为用户设置一些基本的路由协议。启动配置后,即可为用户提供一个完全融合的网络。用户可以直接使用这些功能,并专注于要测试的内容。

    5.2K32

    电脑蓝屏之谜:探究原因、反思微软近期事件与应对策略

    电脑出现蓝屏现象,通常称为“蓝屏死机”(Blue Screen of Death, BSOD),是一种在Microsoft Windows操作系统中出现的严重错误状态指示。...重启电脑,启动时按F8或Shift + F8。 b.  选择“安全模式”。 卸载Falcon Sensor: c.  打开“控制面板” -> “程序和功能”。 d. ...储存体控制区块地址无效 0x0000000A 环境不正确 0x0000000B 尝试加载一个格式错误的程序 0x0000000C 存取码错误 0x0000000D 资料错误 0x0000000E 储存体空间不够...check) 0x00000018 程序发出一个长度错误的指令 0x00000019 磁盘驱动器在磁盘找不到持定的扇区或磁道 0x0000001A 指定的磁盘或磁盘无法存取 0x0000001B 磁盘驱动器找不到要求的扇区...系统还原 如果知道蓝屏发生前的一个好状态点,尝试使用系统还原功能回到那个时间点。 4.5. 检查硬件 确认内存无故障(使用如MemTest86等工具检测)。

    2.8K30

    Xamarin 学习笔记 - 配置环境(Windows & iOS)

    你可以在一个Portable工程里面通过XAML加上C#或者使用Xamarin.Android或Xamarin.iOS构建表单,在这种情况下,我们需要用到特定的本地环境,比如说通过C#代码操纵iOS的Storyboard...仿真器(Emulator)而不是模拟器(Simulator) iOS仿真器不是一个简单的模拟器。二者有着相当大的区别。有一些功能仅在物理设备上能够正常工作。 仿真器和XCode一起安装。...当你安装或者更新XCode或者运行仿真器时,通常会显示一个窗口提示使用条款的内容。如果你不接受条款,那么 Visual Studio for Mac版将不会识别该仿真器。...Emulator仿真器 当我开始我的工作室时,我遇到了和仿真器相关的许多麻烦,Windows 10 Mobile仿真器使用Hyper-v。...要开始构建功能,你需要从VSTS或GitHub或BitBucket连接到云中的现有代码存储库,以及一个构建过程,还有一个设备实验室,拥有超过300种Android和IOS设备配置,你可以运行自动化脚本,

    9K20

    GNS3全面详解系列-GNS3的前世今生

    其实Packet Tracer不是真正的模拟器(Emulateor)只能叫仿真器(Simulator),因为它不能运行真正的早期思科IOS,里面的大部分命令都是用程序模拟出来的。...另外一个好处是,虚拟机对模拟设备的支持比较好,因为GNS3虚拟机是居于Linux内核的,而很多模拟设备也是居于Linxu内核的,这样兼容性和性能会好很多。...Simulation(仿真器): GNS3 模拟设备的功能和特性,例如交换机。...运行在该仿真设备上的不是真实环境下的系统或者软件,例如前面介绍到的思科Packet Tracer就是类似的仿真器,在GNS3上的VPC也是此类仿真器。...温馨提醒:不用过于偏激或者纠结两者之间的异同点,根据个人需要结合使用即可,使用的时候注意下面两点的区别: Dynamips      是一个模拟思科设备比较老的技术了,它使用真正的思科IOS系统。

    2.9K31

    谈谈iOS中的原生物理引擎——UIDynamic的应用

    谈谈iOS中的原生物理引擎------UIDynamic的应用 UIDynamic是iOS中UIKit框架提供的接口,其用来为UI元素增加符合物理世界运动规则的动画行为。...简单来说,UIDynamic提供的实际上是一个物理引擎,由于它是iOS原生系统支持的(iOS 7以上),因此兼容性和易用性非常好,使用它开发者可以非常方便的创建出物理动画。...假如我们要实现这样一个动画效果: 模拟一个台球游戏,首先在窗口中显示一个矩形区域作为球桌,其中放置一个台球元素,给其一个初始的速度和方向来模拟发球动作,之后台球将按照预设的物理规律在桌面上进行碰撞运动。...物理仿真器由UIDynamicAnimator类来描述。...(创建仿真器时会指定一个参照元素,此属性控制是否将参照元素的边界作为碰撞边界进行激活) open var translatesReferenceBoundsIntoBoundary: Bool

    78010
    领券