在Swift中使用构建者模式
发表于|更新于
|浏览量:
在Swift中使用构建者模式
和编程中其他的抽象和模式一样,构建者模式的目的是减少以保持可变状态——从而使对象更简单、且更容易预测。对象变得“少状态”,就会容易测试和调试——因为他们逻辑只存在单纯的输入输出。
尽管构建者模式在java中十分常见,然而在苹果平台上却很少遇到(至少和构建对象不同)。这周,我们来看一下,构建者
文章作者: 今是昨非
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 今是昨非的博客!
相关推荐
2021-07-23
Flutter布局基础——Row水平布局
Flutter布局基础——Row水平布局Flutter中水平布局使用Row,可设置元素水平方向排列,如果想要子元素充满,可把子元素使用Expanded包括起来。 背景使用Row布局的Widget,不能滑动;通常使用Row布局的时候,默认所有的子元素加起来不能超过父视图的宽度。如果想要横向滑动,可考虑使用ListView。 Ps:当所有子元素的宽度超出了父视图Row的宽度后,会有警告。 如果想要竖向布局,使用Column。 如果只有一个元素,可考虑使用Align或者Center来布局。 基础介绍 Row常用属性 children: 子视图 textDirection: 子视图布局方向 TextDirection.ltr: 从左到右 TextDirection.rtl: 从右到左 mainAxisAlignment: 子视图在父视图上的布局方式,水平方向布局 MainAxisAlignment.spaceAround: 子视图之间和子视图距离父视图都留有间距 MainAxisAlignment.center: 所有子试图居中 MainAxisAlignment.end: 所...
2022-09-26
手把手教你创建widget2
手把手教你创建widget2接上篇iOS Widget,这里介绍下WidgetBundle的用法和怎么做一个支付宝类似的 widget,上篇里把WidgetBundle写成了WidgetGroup,我的错。 WidgetBundle 的用法再来回顾一下什么情况下使用 WidgetBundle,上篇里介绍了supportedFamilies,可以设置Widget 不同的尺寸,比如Small、Meidum、Large等,但是如果想要多个同尺寸的 Widget ,比如:想要两个Small尺寸的 Widget ,类似于下面东方财富 Widget 的效果,就需要用WidgetBundle,设置多个Widget。 WidgetBundle的使用不难,下面来看下,上篇最后的代码(可以去https://github.com/mokong/WidgetAllInOne下载,打开 Tutorial2),只显示了一个 Medium 尺寸的 Widget,这里修改为使用WidgetBundle显示两个Medium尺寸的 Widget。 新建SwiftUIView,...
2022-04-22
Algorithem_MergeTwoSortedLists
Algorithem_MergeTwoSortedListsYou are given the heads of two sorted linked lists list1 and list2. Merge the two lists in a one sorted list. The list should be made by splicing together the nodes of the first two lists. Return the head of the merged linked list. Example 1: 12Input: list1 = [1,2,4], list2 = [1,3,4]Output: [1,1,2,3,4,4] Example 2: 12Input: list1 = [], list2 = []Output: [] Example 3: 12Input: list1 = [], list2 = [0]Output: [0] 解法需求是合并两个有序的LinkList,所以解法是 判断 list1.val 和 list...
2022-04-26
《24点》APP——提示功能的实现
更新:《24点》APP——提示功能实现背景商店里所有24点 APP 的一个付费功能是提示的获取,会通过限制提示次数,超出次数后观看广告或者购买来解锁额外次数。比如: 这里就来分享一下,类似24点的提示功能是怎么实现的,其实现步骤如下: 步骤一:判断结果能不能等于24; 步骤二:如果能等于24,显示出能得到24的表达式。 下面详细记录一下实现的过程: 解法原理步骤一,判断能不能等于24有[a, b, c, d] 四个数字,任取两个数字,通过遍历运算符得到运算结果 e,然后把运算结果和剩余的数字放入新的数组中,重复上面的计算过程,直到数组中有一个元素为止;最后判断数组中唯一的数字是否等于24即可。 这里需要注意几点,一是遍历运算符的时候,加和乘符合交换律,所以不需要重复计算;二是除法会有小数,所以最终判断是否等于24的时候,需要通过设置误差范围来判断;再有就是除法的除数不能为零。 所以最终解法描述如下: 定义误差范围,定义要对比的值,定义运算符数组; 定义判断是否相等的判断方法,传入值和要对比的值的绝对值小于误差范围,即视作相等; 数据转换,由于传入的数字是Int,所以通过...
2022-12-12
iOS界面黑白实现
背景iOS APP界面黑白效果实现调研整理,总的来说网上目前有下面几种方法: 针对H5网页:注入js代码 针对APP原生界面: 针对图片和颜色单独设置 hook UIImageView的setImage方法,添加UIImage的Category,生成灰色图片 hook UIColor的colorWithRed:green:blue:alpha:方法 针对界面整体处理 创建一个灰色view,设置不响应事件,然后添加在window最上层 给App整体添加灰色滤镜 具体如下: 实现针对网页:针对网页的处理: 如果有基类,可以直接在基类初始化WKWebview的地方,添加如下代码: 123456WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];// js脚本NSString *jScript = @"var filter = '-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%); -ms-fi...
2024-11-19
国行Mac 开启 Xcode inteligence 提示
背景电脑国行 Mac M1,内存 16G,版本 Sequoia 15.1,Xcode 16.1,在Xcode 设置中,Text Editing 下,Editing Tab下,能看到有个设置Predictive code completion,但是默认是关闭的, 国行的提示不支持,这里说的是怎么开启这个,亲测开启成功。 最终效果如下: 步骤参考XcodeLLMEligible,我用的是不 disable sip 的方式。 首先,在终端中,输入下面命令: 12345678# Override XcodeLLM onlycurl -L https://raw.githubusercontent.com/Kyle-Ye/XcodeLLMEligible/release/0.2/scripts/override.sh | bash -s -- install override xcodellm# Override Apple Intelligence onlycurl -L https://raw.githubusercontent.com/Kyle-Ye/XcodeLLMEli...
公告
This is my Blog