iOS面试必备
发表于|更新于
|浏览量:
备忘
- 内存管理
- 推送原理
- viewController的生命周期,app的生命周期
- 事件响应链与传递链
- 数据库语句、CoreData
- 多线程
- Runtime
- Runloop
- 动画
- git、SVN
- 自动布局的实现,Masonry
- ReactiveCocoa
文章作者: 今是昨非
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 今是昨非的博客!
相关推荐
2024-07-11
SafariFreeMedium插件
背景在阅读上篇 Flutter状态管理中,引用的几篇文章都需要是Medium 会员才能查看的。没有付费的每个月免费只能查看几次,所以就想有没有不付费查看这个的方法,就去搜索了一下。 实现搜索之后,找到了这篇Freedium · GitHub,查看后发现里面有个简单的方法,就是把 host 替换为````freedium.cfd然后重定向。 刚好自己有账号,为了在 Safari 中便于使用,就自己写了一个插件,效果如下: 参考 Freedium · GitHub
2022-08-26
一次诡异的录音崩溃排查
背景上午突然有用户反馈,使用录音功能崩溃。起初以为是最近更新的APP新版本有问题,赶紧去排查。 排查首先在测试手机上,测试环境调试,发现并没有崩溃,长出了一口气,说明不是所有用户都有,不是新版本改出来的问题。 然后去听云后台看日志,发现崩溃的地方是初始化AVAudioRecorder的方法——[[AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:&error];。很费解,只是简单的初始化方法,为什么会导致崩溃呢? 一开始猜测会不会是用户录音权限没开,导致开始录音的时候崩溃。尝试后发现如果权限关闭,在进入录音页面前就会提示权限未开启,去开启权限,并不能进入到录音步骤。 然后怀疑会不会是初始化的url为空,又或者机型不支持设置recordSettings中的某些参数?搜索后,发现有url为空崩溃的条目,所以这里大概率也是初始化的url为空。 继续排查,发现初始化的url,是本地的缓存文件夹中Audio文件夹,并且文件名字是取日期+时分秒用于避免重复,格式为yyyyMMdd_HHmmss...
2019-09-15
批量图片压缩 & 替换
批量图片压缩 & 替换背景最近产品提了个需求,要求把包压缩一下,而项目是OC&Swift混编,这期还加上了RN,还要包不能增大。脑壳疼。。。。他则不上天呢。但需求出来了,还是要做的。所以就想了下面几个方法: 先用LSUnusedResources分析项目中无用的图片和类,删除; 然后对项目中的图片进行压缩替换; 再接着分析linkMap文件,找出大的文件进行优化。 基于clang插件的一种iOS包大小瘦身方案 实现这篇就是关于第二步的,项目里大约有1600多张图片,之前几次压缩都是按大小排序,然后把大于10kb的图片一个个上传到tinypng上压缩,再下载替换。tinypng web最多支持一次20张,每次上传压缩,然后等,就问问烦不烦。。。。 图片批量压缩so,这次我终于受不了,我要找批量压缩的,还真给我搜到了图片批量压缩脚本(Python),这种使用方式GitHub上已经写得很清楚了,每月可以500张批量压缩,然后有一个输出文件夹: 使用这个脚本的时候,要注意: 安装Python 安装click和tinify 到此处申请 API key: https...
2021-09-10
gitignore 添加 Pod 三方库
背景最近项目遇到了一个问题,排查了好久,最后发现是Pod 依赖的私有组件的代码有问题,导致了打包的时候线上包出现了问题。 笔者的项目按照功能抽象出了私有组件,使用 Pod 的方式导入项目,但是 Pod的内容是不提交到 git 的,即每次 Pod 修改,在 主项目的git变更中看不到。于是就遇到了这个问题。 先在主项目中调试的时候,修改了 Pod库的内容。然后把修改内容同步到了 Pod 库单独的项目。但是最后打包的时候 Pod 库的内容却是老的。因为项目里依赖的 Pod 库指定了版本,而更新 Pod库单独的项目时,只同步到了分支上,没有更新新的 Tag。于是再次更新主项目的库时,这个库的内容就又变回了老的。 Ps:理论上来说,放入 Pod 库的内容不应该被频繁修改,是抽出的基础库之类的。但是实际开发中,为了组件化,有些功能组件也会作为私有库使用 Pod 依赖,这些库可能是频繁变更的。 基于这点,笔者感觉还是把 Pod 中的内容,放入主项目的 .git 中比较好,方便看出修改,能够避免出现上面的问题。 修改笔者直接进入项目工程所在目录,编辑.gitignore文件,移出文件中 #...
2026-01-20
关于 AI 与开发
背景最近看到了很多 AI 与开发的话题,比如 # AI 不能帮你背 D 绩效、# 如何看待在线笔试中使用 AI 作弊、# 我们真的应该完全放弃《古法编程》?、# 大家都来分享一下自己的 vibe coding 技巧等等,我也想分享一下我自己的看法。 思考参考 # 大家都来分享一下自己的 vibe coding 技巧 # AI 不能帮你背 D 绩效 # 如何看待在线笔试中使用 AI 作弊 # 我们真的应该完全放弃《古法编程》?
2022-03-29
图片中多个二维码选择的实现
背景买早餐的时候会遇到,支付宝和微信的二维码贴在一起,然后扫码的时候两个二维码一起被识别出来的情况。之前的处理可能是:APP内部判断 是自己的 Scheme 的时,自动跳转;后来发现变成了识别到多个二维码时,弹出二维码选择页,用户选择具体二维码后,再跳转。 公司的项目一直没有做这个功能,最近有时间,就来整理添加到项目中,这里分享记录一下实现的过程。 过程整个的过程是: 识别二维码 只有一个,则直接跳转; 有多个二维码信息,则跳转二维码选择页面; 二维码选择页面标记出每个二维码的位置; 点击对应位置的二维码,跳转对应的链接。 二维码识别二维码识别的逻辑,代码如下: 12345678910111213// UIImage + Category//识别二维码图片- (NSArray <CIFeature*> *)imageQRFeatures { CIImage *ciImage = [[CIImage alloc] initWithCGImage:self.CGImage options:nil]; CIContext *co...
公告
This is my Blog