avatar
文章
194
标签
17
分类
0
首页
归档
标签
分类
关于
今是昨非的博客
首页
归档
标签
分类
关于

今是昨非的博客

Xcode14编译失败修改
发表于2022-09-14
背景升级Xcode 14后,项目编译失败修改,共修改了两种编译错误: 一种是bundle code sign error,Xcode 14 needs selected Development Team for Pod Bundles 一种是Module compiled with Swift 5.6.1 cannot be imported by the Swift 5.7 compiler 其中第一种比较容易解决,第二种稍微麻烦点,解决方案如下: 解决Xcode 14 bundle code sign error这个的解决方案,直接Google,第一个stackoverflow的链接是Xcode 14 needs selected Development Team for Pod Bundles,这里面给出的解决方法是,在Podfile里增加下面代码,然后运行Pod install,设置Pod库的DEVELOPMENT_TEAM是开发者账号的team。 笔者有两个项目,其中一个是Swift为主,用下面的设置方法试了,可以解决。要注意的是如果项目有多个target,ta...
iOS 编译时间优化
发表于2022-09-07
背景目前App项目不大,但是清空后重新编译时间需要200多秒,感觉不太合理,所以,就着手排查了一下。 通常的编译时间优化都是分为三个部分 Xcode编译设置的优化 代码或函数编译时间的优化 三方库编译时间的优化 这里就根据上面三个部分来一一排查。 实现Xcode编译设置的优化使用的是Xcode 13.4,网上搜到的,关于Xcode设置New Build System,及Build Settings中设置Debug Information Format的都不需要设置了,默认已经是合理的。至于Optimization Level的设置,设置后,虽然编译速度可以提升,但是对于Debug不友好,所以,这里也不做设置。故而针对这项优化什么都没有处理。 代码或函数编译时间的优化这方面主要是针对Swift,首先把编译耗时的方法显示出来,在Build Settings中Other Swift Flags添加如下设置,意思是显示编译超过200ms的函数或者类型检查超过300ms的函数显示warning,这里200ms是自己设定,可针对项目的真实情况设置: 1234-Xfrontend -w...
Carthage使用
发表于2022-09-05
背景之前一直用CocoaPods,这次做编译时间优化时,把某些Pod依赖的库改为了Carthage依赖的,这里记录一下Carthage的使用。 使用安装使用brew安装,简单方便 1brew install carthage 使用在项目所在文件夹,即.xcodeproj所在的文件夹下,创建Cartfile 1touch Cartfile 然后打开Cartfile 1open Cartfile -a Xcode 添加要依赖的第三方库,注意依赖版本的指定,指定版本和指定范围的写法,如下: 1234567891011github "krzyzanowskim/CryptoSwift" ~> 1.4.0github "evgenyneu/keychain-swift" ~> 19.0github "ibireme/YYKit"github "ReactiveX/RxSwift" "6.5.0"github "onevcat/Kingfisher" ...
MapManagerSDK集成记录
发表于2022-09-05
背景最近集成MapManagerSDK,遇到了几个问题这里记录一下: 问题一: 对接文档中提示的导入GMObjC算法SDK方式如下,导入后编译不通过,提示:"sm2_plaintext_size" Too many arguments to function call, expected 3, have 4 pod 'GMObjC','3.0.0' 问题二: 导入MapManager后,QMUI库或者其他第三方库,原本正常的,现在报错编译不通过。 问题三: 上面都解决了,编译成功,一启动就崩溃。 解决:问题一"sm2_plaintext_size" Too many arguments to function call, expected 3, have 4的解决很简单,改为pod 'GMObjC',安装最新版即可。 问题二,查看后,发现报错的地方是属性或者方法中使用了debug或者release定义变量。但是为什么之前没有问题,导入MapManagerSDK后,就报错了呢?仔细排查后发现...
一次诡异的录音崩溃排查
发表于2022-08-26
背景上午突然有用户反馈,使用录音功能崩溃。起初以为是最近更新的APP新版本有问题,赶紧去排查。 排查首先在测试手机上,测试环境调试,发现并没有崩溃,长出了一口气,说明不是所有用户都有,不是新版本改出来的问题。 然后去听云后台看日志,发现崩溃的地方是初始化AVAudioRecorder的方法——[[AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:&error];。很费解,只是简单的初始化方法,为什么会导致崩溃呢? 一开始猜测会不会是用户录音权限没开,导致开始录音的时候崩溃。尝试后发现如果权限关闭,在进入录音页面前就会提示权限未开启,去开启权限,并不能进入到录音步骤。 然后怀疑会不会是初始化的url为空,又或者机型不支持设置recordSettings中的某些参数?搜索后,发现有url为空崩溃的条目,所以这里大概率也是初始化的url为空。 继续排查,发现初始化的url,是本地的缓存文件夹中Audio文件夹,并且文件名字是取日期+时分秒用于避免重复,格式为yyyyMMdd_HHmmss...
iOS输入框字符限制
发表于2022-08-20
背景小知识点记录,textField的markedTextRange的使用,如果你已经知道了,就不需要再看了。 iOS输入框字符限制,不同实现方式的对比: 方法1,通过监听textField的UIControl.Event.editingChanged,在对应的方法里做长度拦截判断 方法2,通过textField的代理方法,textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool判断。 对比假设产品要求这个输入框限制输入6个字,怎么判断?下面来看下 方法1声明一个自定义的MWCustomTF,然后监听editingChanged事件,在事件里判断输入字符是否超出最大输入长度,代码如下: 123456789101112131415161718192021222324252627282930313233343536class MWCustomTF: UITextField { ...
一文学会iOS画中画浮窗
发表于2022-08-16
背景之前有看到有人用画中画实现时分秒的计时,顺手收藏了,一直没来及看。最近使用《每日英语听力》,突然发现它用画中画实现了听力语句的显示,顿时来了兴趣,所以来研究一下是怎么实现的?顺便也研究下画中画时分秒计时的实现——每次遇到某些平台每天固定时间开抢的时候,我都希望iPhone能够显示具体到秒的计时,这样就能知道什么时候开始点击合适,而不是每次都提前一分钟在那里不停的点点点却什么都抢不到。。。 实现画中画一般是用来浮窗播放视频的,那如何让画中画播放自定义的界面而不是视频?下面分为5步具体来看下: 实现画中画功能,需要设置哪些开关,实现哪些方法; 基本的使用系统播放器时,画中画的实现; 自定义播放器时,画中画功能的实现又需要如何设置,有哪些不同; 如何通过画中画实现时分秒计时功能; 《每日英语听力》通过画中画播放英语听力语句时怎么实现的? APP支持画中画功能如何让APP支持画中画功能?首先需要设置App支持BackgroundModes,然后勾选BackgroundModes中的Audio, Airplay, and Picture in Picture。 操作如下: ...
The 'Pods-App' target has transitive dependencies that include static binaries
发表于2022-06-11
The ‘Pods-App’ target has transitive dependencies that include static binaries:修改背景最近遇到了两次次这个问题,都是Swift项目Pod添加库开启了use_frameworks!,安装某些OC库时报错;花了好久时间解决,突然想起来之前OC项目安装Swift库也遇到了这个问题,但是之前没有记录,所以这次遇到时没有印象;这次记录下来,分享给大家: 解决方案之前遇到的是OC代码安装ZLPhotoBrowser的Swift库,开启了use_frameworks!,和其他第三方库一起安装时,可以理解为,除了ZLPhotoBrowser是动态库,其他的第三方库默认都使用static_framework或者static_library。 Pod文件末尾添加下面代码: 12345678910111213141516171819use_frameworks!...dynamic_frameworks = ['ZLPhotoBrowser']pre_install do |installer| ...
图片压缩 mac 应用开发
发表于2022-05-23
图片压缩 mac 应用开发背景3年前有个项目BatchProssImage,使用 Python 写的批量压缩图片的,最新再次使用时,发现忘记了怎么使用,所以就有了把这个Python 实现的工具,做成一个简单的 mac app 的想法。 过程想法很简单:印象中当时这个工具是使用 tinypng 的 api 压缩的,所以开发一个 mac客户端,调用压缩的接口,导出照片就可以。开始动工。 首先 mac 客户端的 UI 从哪里来?之前有个项目OtoolAnalyse——分析Mach-O文件中无用的类和方法,是借LinkMapUI 来实现的。这里想了想,嗯,还可以用这个方法。打开项目一看,OC 的,还是用 Swift 写一遍吧。 UI 实现想一下大致需要哪些功能, 选择文件 || 目录 选择导出目录 开始压缩 压缩进度显示 噢噢,还有一个,tinypng apikey 输入 再考虑一下,选择导出目录是否必要?之前笔者自己使用其他 APP 选择导出时,打断先有的操作且不说,对于选择困难来说,每次考虑要导出到哪里都是一个问题,要不要新建一个文件夹,还选择同目录会是什么效果等等。 改为 ...
iOS Widget
发表于2022-05-06
iOS Widget背景一开始是发现支付宝的 Widget 做的很好看,打算仿作一个,做的过程中才发现,原来 Widget 有这么多好玩的地方。所以,在这里记录分享一下: 你知道如何创建类似于 QQ 同步助手的 Widget 吗? 你知道类似于东方财富的不同组 Widget 效果是怎么实现的吗? 你知道下图中支付宝Widget功能是怎么实现的吗? 或者这么问,对于这几个的概念:supportedFamilies、WidgetBundle以及Configurable Widget是否知晓,如果都知道,那就不需要看本篇文章了。 QQ 同步助手的Widget只显示一个Widget的效果,是设置了 Widget 的supportedFamilies只有systemMedium 样式; 东方财富的多组 Widget,是通过WidgetBundle实现的,可以设置多个Widget,每个 Widget 都可以设置自己的大中小;区分是否使用了 WidgetBundle,可以通过滑动时,Widg...
1…789…20
avatar
今是昨非
技术分享、生活感悟
文章
194
标签
17
分类
0
Follow Me
公告
This is my Blog
最新文章
半天通过 AI 实现切换APP中广告 SDK2026-02-05
用 AI 实现了一个小需求2026-01-31
紧急救援中 AI 接管 119 的感受2026-01-31
Rules、Skills、Subagents、MCP 是什么2026-01-29
CodeBuddyCN 使用免费的七牛 Model 步骤2026-01-27
标签
标签2 技术 iOS books Algorithem 随笔 learning iOS自动打包 算法 movies 标签1 生活 分享 iOS蓝牙 Flutter ReactNative ideas
归档
  • 二月 2026 1
  • 一月 2026 8
  • 十月 2025 1
  • 九月 2025 4
  • 八月 2025 3
  • 十二月 2024 1
  • 十一月 2024 2
  • 八月 2024 2
网站信息
文章数目 :
194
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2026 By 今是昨非框架 Hexo 5.4.0|主题 Butterfly 5.5.3
日出江花红胜火,春来江水绿如蓝,能不忆江南