- 博客(52)
- 资源 (3)
- 收藏
- 关注
原创 命令行中,Python 想使用本地环境,但总是显示为Anaconda的虚拟环境
环境变量配置中,将本地环境Python39的路径的两个路径,提到比Anaconda 的前面,这样它才会优先被选择。在cmd 中,我想在本地环境使用 Python、pip ,但它却是一直识别成Anaconda的虚拟环境。两个路径,一个决定了 Python 命令使用哪个版本,一个决定了 pip 命令使用哪个版本。
2024-05-15 16:18:36
462
2
原创 Git 常用指令
然而,最好是新建分支来回退旧版本。否则,别人在此时拉去分支会把旧版本拉到他的本地。添加分支,分支目录 feature,分支名字为 shop。已经提交并且 push 到远端,怎么恢复旧的版本?强制 push 到远端仓库,回退版本才生效。查看状态,查看 git 工作区。已经提交了,怎么恢复久的版本?强制 reset 到旧版本。
2023-11-07 18:50:24
269
原创 iOS 让界面元素的文字随着语言的更改而变化——本地化文字跟随
解决方法是:添加一个观察者,观察 localize 本地语言的通知,然后一有变化就调用自定义的方法执行操作。(而设置中其实是改变了 localize 的语言)在我的 App 内置的设置中,修改了语言,这时需要让当前界面的文本跟着改变语言。
2023-11-07 15:56:18
762
原创 iOS GCD(Grand Central Dispatch)
iOS 常用有三种线程管理方式,分别是与,现在我们先来了解一下其中的 GCD串行与并行针对的是任务队列,而同步与异步,针对的则是线程。自定义串行队列有能力启动主线程和后台线程(只能启动一个后台线程),不会发生死锁。同步任务,会自动安排在主线程执行;遇到异步任务,自动安排在后台线程执行,所以不会死锁。
2023-11-01 20:30:07
946
原创 Category 和 Extension 的区别
swift 的 extension 相当于影分身,每个分身可以具有不同技能(遵循了某个协议或数据源或新定义一下方法)swift 不能在 extension 中添加存储属性,但可以通过 AssociatedKey 的方式来间接实现。参考:https://juejin.cn/post/6960972413240606734。参考:https://juejin.cn/post/6856416734577410055。swift 的 category 写法:extension。可以在 extension 的。
2023-10-31 10:19:46
411
原创 iOS 中,Atomic 修饰 NSString、 NSArray,也会线程不安全
众所周知,基础类型如 int、float 的变量被 atomic 修饰后就具有原子性,则线程安全。然而有些情况,atomic 修饰后不一定是线程安全的。
2023-10-16 20:58:26
676
原创 如何通过点击 UICollectionViewCell 跳转至对应的 UIViewController
手指触碰 UICollectionViewCell 但未释放,这属于 Highlight使用 UITapGestureRecognizer 存在问题使用 didSelectedItemAt 可以解决问题
2023-05-17 22:58:23
362
原创 iOS 中 UIViewController 加载之后,将其中的 UITableView 滑到最底部以及遇到的问题
滑动是异步的,并且滑动的动作需要一点点时间。
2022-11-19 17:59:40
1291
原创 设计模式的二十三招式
设计模式在大的软件架构中经常会使用到,常用的 SDK 中总可以看见设计模式的影子,了解设计对于开发者来说也很重要,可以帮助开发者领会现有框架的思想并且帮助开发者写出更易于与他人协作的代码。
2022-11-02 23:38:45
228
原创 如何在不同的 ViewController 之间传递信息
iOS 开发中,不同的 ViewController 之间传递信息的方式有好几种。这里介绍常见的三种方式,使用自带的 prepare 方式、使用委托模式、使用回调函数与闭包结合的方式。
2022-10-26 20:10:05
1145
原创 如何在 viewController 中加入控件时简洁地使用委托
上面的代码中,在 controller 的 extension 中实现了textField 的方法,在 UI 界面 textField 的变化会调用 TextFieldShouldReturn,所以这里的 controller 通过作为 textfield 的被委托者,获取到变化信息,controller 可以做出反应。首先,使用 extension 的方式,让 ViewController 遵守特定的协议(比如 UITextField 具有 UITextFieldDelegate 协议)。
2022-10-26 19:48:56
204
原创 设计模式之 Vistor 访问者模式:Swift 实现
访问者在获得权限的之后,可以访问被访者的各项内容,同时,不能影响到被访者的属性,这样才是一个文明的访问者。
2022-10-26 19:22:42
624
原创 设计模式之 Template Method 模板方法:Swift 实现
抽象父类定义了模板方法框架,具体的实现类(子类)不能重写模板方法,只修改实现细节。
2022-10-26 18:42:02
618
原创 设计模式之 Strategy 策略模式:Swift 实现
面对一个问题,我们有不同的策略可以选择,那么如何灵活地切换策略呢?就要用到策略模式啦。问题对象持有一个策略引用,在需要切换另一个策略的时候,把这个引用指向对应的策略就好了。
2022-10-24 18:49:51
300
原创 设计模式之 State 状态模式:Swift 实现
状态模式中,当对象的状态改变时,类的行为随着改变。状态上下文类只执行状态切换工作,具体的工作细节交给状态对象去执行。
2022-10-23 18:17:55
314
原创 设计模式之 Observer 观察者模式:Swift 实现
发布者持有一些订阅者的引用,它可以添加订阅者,也可以移除订阅者,或者是通知所有的订阅者。
2022-10-23 17:14:23
440
原创 设计模式之 Memento 备忘录模式:Swift 实现
原发器可以创建它自己的快照并且在需要的时候恢复快照(备忘对象)到自身。备忘对象存有原发器的副本和引用,用来存入备忘录或者从备忘录拿出后恢复到原发器。
2022-10-23 16:37:43
275
原创 设计模式之 Mediator 中介模式:Swift 实现
中介者限制了组件之间的交互,组件只能通知中介一些指令,然后中介者管理它内部拥有的所有组件的数据操作与行为。中介者的作用:收集各个组件的信息,同时不让组件之间耦合。耦合的点,集中在中介者上。
2022-10-23 15:39:34
250
原创 设计模式之 Command 命令模式:Swift 实现
命令模式的作用在于,将消息的发送者和接收者分离开。接收者和命令相连接,命令和发送者相连接;发送者者发送消息可以直接被接受者收到并且处理。
2022-10-22 20:32:39
195
原创 设计模式之 Chain of Responsibility 责任链模式:Swift 实现
在责任链中,若当前处理结点能够处理,则立即处理,若当前结点无法处理,则交给下一个处理结点。
2022-10-22 16:52:16
198
原创 设计模式之 delegate 委托模式:Swift 实现
被委托者持有委托者的引用,被委托者就可以尽情地使用委托者的许多方法,或者重新定义方法应该怎么执行。
2022-10-22 15:58:13
291
原创 设计模式之 Proxy 代理模式:Swift 实现
“代理”只是持有“服务”的一个引用,然后在需要实现的时候,调用代理来解决,实际代理是将命令传达给服务,使用服务来执行具体操作。
2022-09-14 18:25:35
601
原创 设计模式之 Flyweight Mode 享元模式:Swift 实现
把“重量级”但又不是个性化(其它类可能也有一模一样的,所以会引起大量重复)的属性交给公共的类去存放,可以减轻原来类的负担。
2022-08-22 22:13:46
542
原创 设计模式之 Facade Mode 表面模式: Swift 实现
基于现有的基础库,我们使用一个中间的工具去实现某一任务,这一工具的主要负责的是对基础库的各种组合调用。
2022-08-22 21:59:38
998
原创 设计模式之适配器模式:Swift 实现
现实中的适配器把高电压转换为低电压,而我们抽象的适配器使用一个新的对象,既持有新对象(包括新特征),又长得像我们要适配的对象。
2022-08-06 18:37:12
254
pishrink.sh
2021-06-23
opencv调用摄像头拍照并保存图片(C++)
2019-11-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人