weak的实现原理
发表于|更新于
|浏览量:
weak的实现原理
文章作者: 今是昨非
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 今是昨非的博客!
相关推荐
2022-09-05
MapManagerSDK集成记录
背景最近集成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-09-07
iOS 编译时间优化
背景目前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...
2022-06-11
The 'Pods-App' target has transitive dependencies that include static binaries
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| ...
2022-09-27
Xcode 14新建项目 Pod init失败
Xcode 14新建项目 Pod init失败背景使用Xcode 14.0(14A309)新建了一个项目,然后运行Pod init,就报错,[Xcodeproj] Unknown object version (56). (RuntimeError)和can't modify frozen String (FrozenError)。 排查一开始看报错以为是cocoapods出问题了,最坏的打算是重装CocoaPods,但是先去搜索一下,看是否是其他原因导致的,或者有没有遇到同样错误的。 搜索can't modify frozen String (FrozenError),搜出来都是m1芯片怎么怎么的,但是我的电脑不是m1芯片的,所以不是这个问题。 搜can't modify frozen String (FrozenError),发现了pod init cause RuntimeError - [Xcodeproj] Unknown object version 和 RuntimeError - [Xcodeproj] Unknown object ...
2025-08-20
Xcode 26编译失败修改
背景电脑升级MacOS 26.0,新增了一个SDK后,Xcode26 Beta5和Beta6,编译项都报错,提示:Assertion failed: (it != _dylibToOrdinal.end()), function dylibToOrdinal, file OutputFile.cpp, line 5196. 排查过程 在StackOverFlow上有看到说ENABLE_DEBUG_DYLIB=NO,尝试后无效果 在Xcode 26 Link Error中看到,Apple官方人员的回复,要添加-Xlinker -dead_strip -Xlinker -allow_dead_duplicates. 解决办法通过 Other Linker Flags 修改进入 Target 的 Build Settings 标签:选中 Target → Build Settings → 搜索 Other Linker Flags。手动修改链接参数:点击 Other Linker Flags,首先移除 12-ld64 -ld_classic 然后添加 1234-Xlinker ...
2021-12-30
iOS 音频后台播放 && 锁屏显示及控制
播放锁屏通知栏显示背景播放音频时,希望通知界面能显示,且能控制音频播放。由于之前需求是进入后台时播放暂停,所以每次打开通知界面时,播放就暂停,看不到类似于音乐播放器那样的效果。后来发现,去除进入后台暂停代码后,通知界面就可以显示播放器,但是不能控制、且没有进度。 实现支持后台播放首先需要 APP 支持后台播放,即,一方面去除进入后台播放暂停的代码逻辑;另一方面,设置 Target -> Signing & Capabilities 中,添加 Backgroud Modes,打开 Audio, AirPlay, and Picture in Picture。图片如下: 注意设置AVAudioSession,播放前根据实际需要设置,播放后关闭 AVAudioSessionCategory类型 Category类型 当按”静音”或者锁屏时是否静音 是否可以和其他支持混音的 APP 混合播放 是否支持后台 场景举例描述 AVAudioSessionCategoryAmbient 是 是 否 常用于 APP 的背景音,比如玩游戏时还可以听音乐 AVAud...