在Swift中使用构建者模式
发表于|更新于
|浏览量:
在Swift中使用构建者模式
和编程中其他的抽象和模式一样,构建者模式的目的是减少以保持可变状态——从而使对象更简单、且更容易预测。对象变得“少状态”,就会容易测试和调试——因为他们逻辑只存在单纯的输入输出。
尽管构建者模式在java中十分常见,然而在苹果平台上却很少遇到(至少和构建对象不同)。这周,我们来看一下,构建者
文章作者: 今是昨非
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 今是昨非的博客!
相关推荐
2016-05-13
推送处理
我这两天都在改这么个东西: 需要根据推送消息,在下方的tabbar上显示提示红点。即:接收到推送消息,当点击推送消息时,跳转对应界面;点击程序图标进入程序时,显示提示的小红点。 前记我记得我之前做的推送处理,分为三种情况,这个我记得很清楚,因为我第一次面试在北京的车库咖啡,被人问到了这个问题,但是我没答出来,因为那时候我确实都没做过推送处理;后来进了第一家公司,有个好的产品,然后刚好有这个需求,然后就get了这个技能。 a. 程序在后台,接收到推送消息,点击推送消息,走的是 1234567// 程序在运行时接收到通知- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ ... [self receivePush:self.userInfo];} b. 程序在前台,接收到推送消息,弹窗提示/直接处理,对应的方法还是 1234567// 程序在运行时接收到通知- (void)appli...
2023-03-22
iOS推送播放语音播报更新
iOS推送播放语音播报更新接上篇如何让iOS推送播放语音,之前的结论是iOS如果需要送审商店只能播放本地的mp3文件,这里更新一下: 更新语音的播放,最终调用的方法是UNNotificationSound(named: xxx),而这个方法官方文档注释如下: 12// The sound file to be played for the notification. The sound must be in the Library/Sounds folder of the app's data container or the Library/Sounds folder of an app group data container. If the file is not found in a container, the system will look in the app's bundle. public convenience init(named name: UNNotificationSoundName) 注释里说,语音文件会从这三个地方...
2022-03-29
Xcode 13.3 Archive 失败
背景升级Xcode 13.3之前,Debug 和 Archive 都没问题;升级 Xcode 13.3之后,Debug 没问题,Archive 就报错。错误信息是error: Abort trap: 6 (in target 'ZLPhotoBrowser' from project 'Pods'),于是提了个 issue,目前已解决。 解决方案是: 123"You can work around this issue by replacing UI_USER_INTERFACE_IDIOM() with UIDevice.current.userInterfaceIdiom. 这里记录分享一下,如果遇到同样问题的,可以搜一下,看是否同样是因为UI_USER_INTERFACE_IDIOM()。
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: 所...
2021-05-14
iOS 工作日——过滤法定节假日日历提醒的实现
iOS 工作日——过滤法定节假日日历提醒的实现背景笔者五一之前补班的时候,闹钟没响,早上差点迟到了。笔者闹钟设置的是周一到周五,iPhone没有法定节假日的设置,也没有补休的设置。。。。笔者就想要解决这个痛点,梦想着,要是做出来了,发布到商店,从此走上人生巅峰,赢取白。。。。 YY过后,回过头来,接着调研,法定节假日闹钟的实现,笔者查找了很多资料,发现不用做梦了。首先iOS程序添加闹钟到时钟APP是不允许的。。。其次,iOS也没有法定节假日的判断。。。。所以不用YY了。但是笔者还真找到了iOS自定义闹钟 —— 中国法定节假日(升级版)这个,通过快捷指令自定义闹钟,可以实现过滤法定节假日。原理是:设置闹钟,然后通过快捷指令的自动执行,每天在闹钟时间前,通过订阅的别人维护的日历或者自己本地维护日历,判断当天是否是节假日,然后决定当天的闹钟是否打开、关闭。笔者不得不赞一个,真的优秀。 虽然笔者的发财梦夭折了。。。但笔者想到了另一个,虽然iOS程序不能直接添加闹钟,但是iOS程序可以直接添加日历提醒啊,比如预约直播或者预约抢购的,其实都是添加事件到日历中,然后在指定的时间,弹出来日历...
2024-06-07
Safari 获取 Bing Rewards 插件
背景Bing Rewards 可以兑换天猫礼品卡、中国石化礼品卡、肯德基电子券、盒马礼品卡、苹果礼品卡等。level 1 的时候每天至多获取 30 积分,level 2 的可以电脑端 90积分、手机端60 积分。每天150 积分点着太累了,就想着有没有一键的便捷操作。 找到了一个通过 Chrome 插件Rewards-Search-Automator: Chrome / Edge extension for automatic Bing Search,来实现的,除去其中的 Mobile 不生效,外加搜索完成跳转开发者的网站,别的还好,可以自己下载代码,修改去掉跳转开发者网站的逻辑。 但是就是还有个问题,在 iPhone 上用不了,所以手机端的 60 积分还是不能一键获取,所以就想到了,借鉴这个做个 Safari 插件,然后就可以在iPhone上用了。 实现逻辑很简单,iPhone 使用 Bing 搜索,然后抓包出请求,然后提取出关键的form,再封装到 Safari Extension 中,当 popup 出来的时候,触发搜索。添加生成随机字符串的逻辑,每隔 6 秒,重新搜...
公告
This is my Blog