在Swift中使用构建者模式
发表于|更新于
|浏览量:
在Swift中使用构建者模式
和编程中其他的抽象和模式一样,构建者模式的目的是减少以保持可变状态——从而使对象更简单、且更容易预测。对象变得“少状态”,就会容易测试和调试——因为他们逻辑只存在单纯的输入输出。
尽管构建者模式在java中十分常见,然而在苹果平台上却很少遇到(至少和构建对象不同)。这周,我们来看一下,构建者
文章作者: 今是昨非
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 今是昨非的博客!
相关推荐
2025-08-20
Xcode 26.4 AFNetworking 编译失败修改
背景升级到 Xcode 26.4 之后,项目编译失败了,排查后发现是 AFNetworking 库导致的,原因是:Xcode 26.4 :SDK 将 netinet6/in6.h 标为模块私有头,AFNetworking 4.x 直接 import 会报错; 修改Podfile中,针对 Target处理即可。让 AI 处理即可。 1234567891011121314151617181920post_install do |installer| # Apple 平台上 netinet/in.h 已包含 IPv6 定义,移除冗余 import 即可。 %w[ AFNetworking/AFNetworking/AFHTTPSessionManager.m AFNetworking/AFNetworking/AFNetworkReachabilityManager.m ].each do |rel| path = File.join(installer.sandbox.root, rel) next unless File.e...
2022-09-28
iOS CreateML的使用
CreateML使用背景业务需求,想要通过拍照识别照片中指定物体的数量或者物体的种类。而这种物体的模型网上没有训练好的,需要从头开始。所以调研了苹果的createML的实现方案,具体操作如下: 需求是:通过拍照识别照片中指定物体的数量,实现方案大致有几种: 通过第三方平台,训练数据,生成模型,提供前端使用 自己搭建平台,训练数据,生成模型,提供前端使用 通过苹果的CreateML工具,训练数据,生成模型,供iOS使用或转换成其他模型使用 对比可以发现,通过苹果的CreateML工具,可以省去搭建平台的过程。下面来看看怎么使用CreateML。 使用CreateML的整体流程是: 有大量的样本 标注所有的样本 用这些样本训练生成模型 验证模型的识别率 测试模型效果 导出模型供使用 需求是通过拍照识别照片中指定物体的数量,所以对我来说样本就是照片,下面就来看下怎么生成CreateML训练需求的标注信息。 使用样本照片标注首先要有大量的样本照片,这里由于是调研测试,所以选取20张照片,照片来源是百度图片。。。麻烦的是照片标注,由于苹果CreateML训练需要指定格式的J...
2022-04-12
Algorithem_BinarySearch
Algorithem_BinarySearchBinarySearchGiven an array of integers nums which is sorted in ascending order, and an integer target, write a function to search target in nums. If target exists, then return its index. Otherwise, return -1. You must write an algorithm with O(log n) runtime complexity. Constraints:All the integers in nums are unique.nums is sorted in ascending order. 解法一开始我的想法是,从每次数组的中间 middleIndex 开始查找,比较数组中间的数字和 target 的大小,target 大则取 从middleIndex到数组结尾截取数组生成新的数组;target 小则取从0到 middle...
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,...
2015-12-30
实现Button文字(titleLabel)和图片(imageView)上下排列
实现Button文字(titleLabel)和图片(imageView)上下排列 1、我最开始实现这个采用的方法:重新自定义一个view,然后有两个属性label和imageView,然后设置位置布局,再添加单击手势,用代理回传点击方法。 2、第二种方法:自定义一个Button继承Button,有两个属性label和imageView,然后设置布局。这样就不用添加单击手势。 3、第三种方法:直接用Button自带的titleLabel和imageView,写个Category,用来设置label和image的排列方式,eg:上下、左右 明显前两种是很不好的,所以这里只说第三种: Button有两个属性:titleEdgeInsets和imageEdgeInsets,通过设置这两个,就可以实现所有需要的Button的样式,如:image在上、image在下、image在左、image在右。 在设置这两个之前,我们先要理解Button上面的titleLabel和imageView的位置关系(想象Button默认的image和label的显示): titleEdg...
2022-04-15
Algorithem_ReverseWords
Algorithem_ReverseWordsReverse Words in a String IIIGiven a string s, reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order. Example 1: 12Input: s = "Let's take LeetCode contest"Output: "s'teL ekat edoCteeL tsetnoc" Example 2: 12Input: s = "God Ding"Output: "doG gniD" 解法一逻辑:把字符串根据空格切割成数组,然后遍历数组,对数组中字符串调用 reversed 方法,最后在使用空格join为字符串返回 代码如下: 12345678910111213class Solution ...