weak的实现原理
发表于|更新于
|浏览量:
weak的实现原理
文章作者: 今是昨非
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 今是昨非的博客!
相关推荐
2021-07-20
iOS 键盘删除键响应
iOS 键盘删除键响应背景背景是,实现一个分享到微信,多选加输入框,点击键盘删除键,删除多选选中对象的东西。 实现由于UITextField没有删除键的代理,所以笔者最开始的想法是,通过textField:shouldChangeCharactersInRange:replacementString:来实现监听,当当前字符串为空且要替换字符串为空时,说明是点击的删除按钮,通过Block方法回掉出去,代码如下: 12345678910- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if ((textField.text.length == 0) && (string.length == 0)) { if (self.deleteBackwardBlock) { self.deleteBa...
2022-01-06
Swift后缀表达式(逆波兰式)转换计算
Swift后缀表达式(逆波兰式)转换计算背景最近在开发《挑战24点》的过程中遇到了一个问题,即,如何计算常用数学表达式的结果,即,给定字符串8 - (6 + 4 / 2 - 1) * 2,怎么计算得到结果,并且得到计算的过程。 网上查资料发现,大部分都是类似系统计算器的处理,在遇到第二个运算符时,就把前一步的操作结果计算出来。这样的处理方式并不适用于笔者想要解决的问题。 进一步搜索后发现,前缀表达式、中缀表达式、后缀表达式的概念,给定的字符串8 - (6 + 4 / 2 - 1) * 2属于中缀表达式,而想要计算机得出结果,可以转为前缀表达式或者后缀表达式,然后再对转换后的表达式进行计算。 这里采用中缀表达式转后缀表达式,然后计算后缀表达式得出结果,步骤如下。 Swift 中缀表达式转后缀表达式什么是中缀表达式、后缀表达式?首先理解中缀表达式和后缀表达式分别是什么? 中缀表达式: 是常用的算术表示方法,操作符处于操作数的中间,比如 (a + b),即中缀形式,故而称之为中缀表达式。 后缀表达式: 运算符写在操作数之后,比如 (a, b, +),称之为后缀表达式,又名...
2023-01-18
拼图APP
背景建设银行龙卡信用卡小程序有个拼图小游戏,如下图所示,感觉挺好玩的 于是就试着做了一个APP版出来,简单有趣,给小孩玩耍再好不过了,开源出来,欢迎大家感兴趣的自己运行到手机上体验。 Github地址: 拼图 最终效果如下:
2021-08-04
iOS 虚拟定位原理与预防
iOS 虚拟定位原理与预防背景说到虚拟定位,常有印象都是安卓上的分身软件甚至系统自带的位置穿越(笔者曾经使用过ZUK Z2系统自带的位置穿越),会认为iOS上虚拟定位比较困难。笔者没调研之前也是这么认为,之前已知的虚拟定位是使用Xcode添加GPX文件,编辑经纬度,从而实现虚拟定位。但是这种操作也只有熟悉iOS开发的人才能操作,而且需要mac电脑,故而笔者印象中也是iOS上虚拟定位比较困难。 然而经过调研之后,笔者发现,iOS的虚拟定位没有那么困难,甚至相比于安卓更简单。下面就来介绍一下iOS中几种虚拟定位的方法。 虚拟定位的几种办法及原理笔者调研后,发现iOS上面虚拟定位大致可有4中情况: 使用Xcode通过GPX文件虚拟定位 使用爱思助手中的虚拟定位功能直接虚拟定位 通过外接设备,比如蓝牙和手机连接,发送虚拟定位数据来虚拟定位 越狱设备中通过hook定位方法,来虚拟定位 下面就来一个个分析实践: 使用Xcode通过GPX文件虚拟定位使用Xcode通过GPX文件虚拟定位,iOS开发一般比较熟悉,操作步骤是: 新创建一个iOS项目,然后添加文件,选择创建GPX文件 编辑...
2021-05-13
如何让iOS推送播放语音
本文发表在《搜狐技术产品》公众号如何让iOS推送播放语音 iOS 推送播放语音一:背景iOS 推送播放语音的需求调研,即收到推送后,播放推送的文案,文案的内容不固定。类似于支付宝和微信的收款到账语音。 只有iOS10以上才支持app被唤醒后在后台/锁屏状态下播放音频。所以iOS10以下的设备,在收到VoIP Push后只能在local push上设定一段固定铃声,这也是为什么iOS10以下只有“微信支付收款到账”。 iOS 12.0之前,后台播放音频未被限制,直接使用Notification Service Extension (iOS 10.0以后才支持) 功能使用系统提供的功能AVSpeechSynthesizer即可。 iOS 12.0之后,Notification Service Extension后台播放音频功能被限制,所以播放实现起来比较困难。 如果要上架商店,只有播放固定的音频,或固定拼接的音频,通过设置通知的声音或者发送本地通知设置本地通知的声音来播放 如果无需上架商店,可以手动打开Notification Service Extension的后台播放, ...
2022-08-26
一次诡异的录音崩溃排查
背景上午突然有用户反馈,使用录音功能崩溃。起初以为是最近更新的APP新版本有问题,赶紧去排查。 排查首先在测试手机上,测试环境调试,发现并没有崩溃,长出了一口气,说明不是所有用户都有,不是新版本改出来的问题。 然后去听云后台看日志,发现崩溃的地方是初始化AVAudioRecorder的方法——[[AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:&error];。很费解,只是简单的初始化方法,为什么会导致崩溃呢? 一开始猜测会不会是用户录音权限没开,导致开始录音的时候崩溃。尝试后发现如果权限关闭,在进入录音页面前就会提示权限未开启,去开启权限,并不能进入到录音步骤。 然后怀疑会不会是初始化的url为空,又或者机型不支持设置recordSettings中的某些参数?搜索后,发现有url为空崩溃的条目,所以这里大概率也是初始化的url为空。 继续排查,发现初始化的url,是本地的缓存文件夹中Audio文件夹,并且文件名字是取日期+时分秒用于避免重复,格式为yyyyMMdd_HHmmss...
公告
This is my Blog