移动开发

iOS 静态库 和 bundle

开源库 公开源代码,能看到具体实现,如SDWebImage,AFNetworking 闭源库 不公开源代码,是经过编译后的二进制文件,看不到具体实现,主要分为静态库 和动态库 静态库和动态库的区别 1、 形式上 静态库是.a 和 .framework。 动态库是.dylib和 .framework ,xcode8 为.tbd ,本质是.dylib 2、使用上: 静态库,链接时,会被完整的复制到

日常Ios开发常用的技巧

日常Ios开发常用的技巧 自用 不断完善中... 1、禁止手机睡眠 [UIApplication sharedApplication].idleTimerDisabled=YES; 2、隐藏某行cell -(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{// 如果

dispatch_group_leave崩溃

崩溃描述 image.png 近日排查线上崩溃时,发现一个描述信息很少的崩溃,如上。由dispatch_group_leave.cold.1可知,属于dispatch_group异常 dispatch_group使用 dispatch_group使用场景:A任务依赖B/C/D子任务全部执行完成,才进行触发执行。 如何添加子任务,通常有两种方式: block dispatch_gr

XCode14 & iOS16 适配问题汇总

Xcode 14 beta 6下载官方地址(需要AppID登录) iOS16 Beta8版 描述文件下载官方地址(需要AppID登录) 一、iOS16手机开启开发者模式 "developer mode disable" iOS16手机未打开开发者模式时: 1、Xcode 无法选中 iOS16的设备,报错:developer mode disable 2、无法打开升级前编译的App 解决办法:在你

Swift 中的 async let

Async let 是Swift并发框架的一部分,允许异步实例化一个常量。并发框架引入了async-await的概念,这使得异步方法的并发性结构化,代码更易读。 如果你是第一次接触async-await,建议先阅读我的文章Swift 中的async/await ——代码实例详解。 如何使用 async let 在解释如何使用 async let 时,了解何时使用 async let 更为重要。我将

iOS启动优化-1

启动优化基本概念1 虚拟内存 & 物理内存 早期的数据访问是直接通过物理地址访问的,这种方式有以下两个问题: 1、内存不够用 2、内存数据的安全问题 内存不够用的方案:虚拟内存 针对问题1,我们在进程和物理内存之间增加一个中间层,这个中间层就是所谓的虚拟内存,主要用于解决当多个进程同时存在时,对物理内存的管理。提高了CPU的利用率,使多个进程可以同时、按需加载。所以虚拟内存其本质就是一

iOS - 自定义弹窗

通过xib创建一个自定义弹窗: 该弹窗可以自定义view的背景,颜色,字体的大小,颜色调整 方便编写,调用简单: image.png LoginAlertTableView.h image.png LoginAlertTableView.m import "LoginAlertTableView.h" @interface LoginAlertTableView() @pr

iOS tabbar动画-CYLTabBarController

GitHub 源码: CYLTabBarController Star: 6.1k 【中国特色 TabBar】一行代码实现 Lottie 动画 TabBar,支持中间带 + 号的 TabBar 样式,自带红点角标,支持动态刷新。【iOS13 & Dark Mode & iPhone XS MAX supported】。 前言 首先:不仅仅是一行代码! 官方声称的 "一行代

44 道 JS 难题,做对一半就是高手

1. parseInt 遇上 map ["1", "2", "3"].map(parseInt) // A. ["1", "2", "3"] // B. [1, 2, 3] // C. [0, 1, 2] // D. other 答案是D。实际上返回的结果是 [1, NaN, NaN] ,因为 parseInt 函数只需要两个参数 parseInt(value, radix) ,而 map 的