Tag: Huddles

iOS Huddle#4

2016年12月29日星期四 iOS Huddle是我们每月在Black Pixel iOS团队的Slack频道中共享的最佳链接的摘要。 反应式编程 如今,反应性编程似乎风行一时。 如果您对反应式编程感到好奇,我们认为Cocoa with Love的这篇文章很好地介绍了其背后的一些概念。 Matt Gallagher通过以下原则定义了反应式编程: 可变状态的任何“获取器”都会引起问题。 代替使用getter,任何计算,生成,加载或接收的状态值都应立即发送到通道中,并且想要访问这些值的程序的任何部分都必须订阅该通道。 本文就一些简单用例的KVO有多高提出了一些很好的观点,并概述了我们在使用它时遇到的一些典型问题。 与往常一样,反应式编程可能不是万灵药,但它提供了一种不同的方式来了解如何设计应用程序。 的GitHub GitHub现在允许您直接从PR中解决合并冲突。 对于最简单的问题,这是一个实时保护程序。 对于更复杂的问题,万花筒仍然是我们的最爱。 元编程 DRY是一个好概念,通常不那么容易实现。 有些人认为过早地进行DRYing类似于过早的优化。 其他人发誓。 无论您对DRY感觉如何,我们可能都同意的一件事是,样板代码的实现可能是乏味,重复且容易出错的。 我在看您,JSON序列化和NSCoding! 因此,为什么不使用一些不错的元编程和自动代码生成来替换其中的部分或全部。 这就是Sourcery可以为您做的。 您可以查看该崩溃报告吗? 我们中有多少人被问到这个问题并交出了未标记的堆栈跟踪信息? 没什么好玩的。 幸运的是,Apple写了一篇非常不错的技术说明,标题为“了解和分析应用程序崩溃报告”。 快速游乐场 Swift Playgrounds确实可以帮助您快速制作原型并测试想法。 操场也可以用来隔离一些特定的问题。 PlayAlways可让您直接从菜单栏中快速创建Xcode游乐场。 幕后花絮 当Instagram展示其如何重新设计其Feed时,深入介绍实现细节时,您知道您可能会学到一些东西。 Instagram软件工程师Ryan Nystrom的这次演讲并不令人失望。 对于任何好奇或渴望完善自己的工艺的人来说,这都是必看的。 尝试? 与As? 这是Erica Sadun撰写的简短文章,概述了如何混合尝试? 与作为? 和条件绑定可能会带来意想不到的后果。 我的记忆在哪里? 如果像我们一样,您是Mike Ash深入技术博客的狂热读者,您将对他的GOTO 2016会议演讲感到高兴:对Swift内存布局的探索。 请放大此文本 iOS 7为iOS应用程序引入了全新的视觉设计范例。 […]

iOS Huddle#2

2016年10月26日星期三 iOS Huddle是我们每月在Black Pixel iOS团队的Slack频道中共享的最佳链接的摘要。 从BPXL Craft 如果您错过了它,这是BPXL Craft最近以iOS为中心的系列: iOS上的事件交付:第1部分,第2部分和第3部分 布兰登·亚历山大(Brandon Alexander)完善了活动交付方面的出色系列。 第1部分介绍了触摸事件,命中测试和手势识别器。 第2部分完成了UIResponder中定义的其余事件, 而第3部分则说明目标动作模式。 从水冷却器周围 调试魔术 有时,要找出错误的根本原因可能确实具有挑战性。 幸运的是,我们发现了一些隐藏的宝石,这些宝石可以简化此过程。 Apple提供了有关iOS和macOS的“秘密”调试的技术说明。 只需确保不要使用以下任何一种方法来发布您的应用,因为它们可能会被拒绝。 最近,Shaps出现了很多有用的推文。 使用私有API _viewControllerForAncestor爬上超级视图层次结构以查找父视图控制器。 还要了解如何转储打印功能以美化控制台输出。 可摘枚举 将可保存的选项列表映射到表或选择器视图是一件很麻烦的事情。 为什么不引导您的内部Tom Sawyer并让PickableEnum协议扩展代替您呢? iOS 9中的NSNotificationCenter更改 在对NSNotificationCenter的一个可喜的变化中,基于非块的观察者现在将弱引用归零,因此无需注销它们。 阅读有关这些更改以及调试通知的其他提示。 (要获得加分,请深入研究Mike Ash的记忆,以详细说明为何将弱引用归零很重要。) 先进的Swift运算符 鉴于Swift偏爱安全性,它的算术运算符默认情况下不会溢出,而是会引发错误,这也就不足为奇了。 我们发现Swift有第二套算术运算符,在极少数情况下需要此功能时,它们会溢出。 在Swift文档的Advanced Operators部分中获取详细信息。 应用启动时间慢 用户可能是善变的,而启动缓慢的应用是许多人的祸根。 速度慢的应用也可能会被“应用评论”拒绝。 使用DYLD_PRINT_STATISTICS环境变量可以获取有关加载,绑定,设置和初始化所花费的时间的非常详细的数据。 绘制细线 当视网膜显示器发布时,iOS开发人员和设计师不得不开始不同的想法。 从设计转到代码可能导致意外行为,因为系统将从点转换为像素。 了解如何在设计需要时调整Core Graphics以绘制细线。 一个真正的从不学习C的程序员 对于许多Objective-C开发人员而言,学习C是通过的权利。 威尔·希普利(Wil Shipley)分享了一个有趣的故事,讲述了一个真正的从未学习过C的程序员。 恢复到tvOS 由于焦点引擎的工作方式,为tvOS进行开发需要转变思维。 […]

iOS Huddle#1

2016年9月22日星期四 iOS Huddle是我们每月在Black Pixel iOS团队的Slack频道中共享的最佳链接的摘要。 从BPXL Craft 如果您错过了它,这是BPXL Craft最近以iOS为中心的文章: iOS上的事件传递:第1部分 布兰登·亚历山大(Brandon Alexander)在事件交付系列的第一部分中处理触摸处理。 了解响应者链在后台如何进行手势和事件。 从水冷却器周围 Xcode 8提示 我们只是在摸索Xcode 8可以做的事情,到目前为止看起来还不错。 您可能已经注意到,该控制台比以前的版本嘈杂得多。 Russell Invanovic共享OS_ACTIVITY_MODE环境变量以将此变量设置为-11。 享受安静。 Felix Schwarz找到了方便的“⌥+⌘+ /”快捷方式,可以轻松生成文档注释。 你未来的自我感谢你。 使用iOS安全性在幕后 如今,苹果越来越多地提供更多信息,以帮助开发人员并为开发人员提供信息。 在黑帽大会上的最新演讲中,苹果安全工程与体系结构负责人IvanKrstić公开了有关如何在iOS中处理安全性的一些详细信息。 神经网络的“你好,戴夫” 您可能听说过最近的iPhone 7发布中提到的“机器学习”。 事实证明,您可以使用新的BNNS框架将此功能添加到自己的应用程序中。 Matthijs Hollemans演示了一个示例应用程序,向您展示了操作方法。 实施AVAssetResourceLoaderDelegate:操作指南 贾里德·辛克莱尔(Jared Sinclair)深入研究AVFoundation的不足之处,以找到一种减少播客应用带宽使用的解决方案。 在Swift中使用JSON 一段时间以来,似乎每周都有一个新的Swift JSON解析框架。 我们更喜欢编写自己的解析器,事实证明我们的方法与Apple建议的一些最佳实践保持一致。 通过减少动态调度来提高性能 动态调度是面向对象编程的一项关键功能,它可以实现诸如方法重写之类的功能。 通过使用Swift关键字final了解如何以及何时消除动态调度以提高运行时性能。 访问控制变更 Swift 3对访问控制进行了一些有趣的更改,这将有助于保持锁定状态。 了解新的文件专用访问级别将如何影响您的应用并计划迁移。 HTTP直播流示例 Apple提供的这些出色示例(包括基本流和高级流)使开发支持HLS的过程变得容易得多。 产生触觉反馈 iOS 10为开发工具包带来了触觉反馈。 探索如何增强应用程序以为与UIFeedbackGenerators进行触摸交互提供更丰富的反馈。 […]