在Swift中使用构建者模式
发表于|更新于
|浏览量:
在Swift中使用构建者模式
和编程中其他的抽象和模式一样,构建者模式的目的是减少以保持可变状态——从而使对象更简单、且更容易预测。对象变得“少状态”,就会容易测试和调试——因为他们逻辑只存在单纯的输入输出。
尽管构建者模式在java中十分常见,然而在苹果平台上却很少遇到(至少和构建对象不同)。这周,我们来看一下,构建者
文章作者: 今是昨非
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 今是昨非的博客!
相关推荐
2015-11-17
iOS开发知识点
iOS开发知识点今天整理项目,为项目添加注释,发现有些东西需要保存一下,将来好使用。 设置navBar的背景,去掉黑线,试了好长时间,查了好多,这个对我适用 设置navBar上item的颜色,以及nav Title的颜色和字体大小 替换系统返回按钮的图片,设计说自带的太丑,一开始是自定义返回的View,后来发现不用那么麻烦,直接有方法可以替换 123456789101112131415// 设置navBar背景,这样设置可去掉那个黑线[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"bg_bar"] forBarMetrics:UIBarMetricsDefault];[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];[[UINavigationBar appearance] setTranslucent:NO]; // 设置navBar的按钮的tintColor,...
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后,就报错了呢?仔细排查后发现...
2021-12-29
iOS webview 接入 HTTPDNS
2021-08-18
Flutter布局基础——自定义BottomNavigationBar
Flutter布局基础——自定义BottomNavigationBar背景这里我们来尝试实现一个不规则的 BottomNavigationBar,首先了解两个系统组件: floatingActionButton和BottomAppBar floatingActionButtonfloatingActionButton用于创建一个浮动的按钮,有两种样式:一种是圆形的纯图标的;一种是椭圆的带有图标或文案的。 示例如下: 123456789101112131415161718192021222324252627282930313233343536373839404142void main() => runApp(const MyApp());/// This is the main application widget.class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); static const String _title = ...
2022-05-23
图片压缩 mac 应用开发
图片压缩 mac 应用开发背景3年前有个项目BatchProssImage,使用 Python 写的批量压缩图片的,最新再次使用时,发现忘记了怎么使用,所以就有了把这个Python 实现的工具,做成一个简单的 mac app 的想法。 过程想法很简单:印象中当时这个工具是使用 tinypng 的 api 压缩的,所以开发一个 mac客户端,调用压缩的接口,导出照片就可以。开始动工。 首先 mac 客户端的 UI 从哪里来?之前有个项目OtoolAnalyse——分析Mach-O文件中无用的类和方法,是借LinkMapUI 来实现的。这里想了想,嗯,还可以用这个方法。打开项目一看,OC 的,还是用 Swift 写一遍吧。 UI 实现想一下大致需要哪些功能, 选择文件 || 目录 选择导出目录 开始压缩 压缩进度显示 噢噢,还有一个,tinypng apikey 输入 再考虑一下,选择导出目录是否必要?之前笔者自己使用其他 APP 选择导出时,打断先有的操作且不说,对于选择困难来说,每次考虑要导出到哪里都是一个问题,要不要新建一个文件夹,还选择同目录会是什么效果等等。 改为 ...
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: 所...
公告
This is my Blog