申请WWDC奖学金

2天前,我已将申请提交给Apple的WWDC 2016学生奖学金。 似乎每年我真的很想这样做,但是今年我终于做到了。 即使我没有赢球,这也感觉像是巨大的成就。 自从在2014年WWDC上发布《 Swift编程语言》一书以来,我就一直在学习Swift,但是我一直在努力学习Cocoa框架,因为那里有很多东西需要学习。

最近,我在业余时间对Web项目进行工作变得有些无聊。 可能是因为我现在是按职业划分的Web开发人员,或者也许我只是对该平台感到厌倦。 但是,无论哪种方式,我都认为在学习iOS开发方面取得成功的最好方法是仅构建一个应用程序并填补我的空白。 这将我们带到名为Z Split的应用程序中。

Z分割

我从一月份开始这个项目,甚至在考虑可以将其提交奖学金之前。 这是WSplit,Llainfair和LiveSplit的计时器。 那里有很多分割计时器,但在iOS或OS X上没有真正的分割计时器。这是我想填补的空白。

我想制作一个优雅的分割计时器,并利用平台的本机API和特定功能。 我使用了Autolayout,Core Data,3D Touch,Watch Kit,UIKeyCommand等技术。

我和父亲一起设计了该应用程序。 我们决定为应用程序选择一个黑暗的主题。 我通常喜欢在应用中使用深色主题(其中一个是Tweetbot)。 轻量级版本肯定会在将来的某个时候问世。 iOS 10即将推出全系统黑暗模式!

3月,我参加了尝试! 东京的Swift会议。 那里有很多很棒的演讲者,我在那里学到了很多很棒的技巧。 其中之一:Swift中的协议/扩展确实很棒!

我在代码中使用了协议来简化两件事:自定义UITableViewCells上的渐变和简单的CoreData表。 他们使我节省了重复的代码并精简了我的View Controller,以使它们不会变得无所不包。

开发应用程序中最难的部分之一可能是让Core Data正常运行以使所有内容正常运行。 这是一个非常不错的框架,但是对于像我这样的新手来说,学习曲线相当高。 持久性系统需要管理很多棘手的“陷阱”。 例如,有一次我的应用需要花费几秒钟来加载每个视图,因为从核心数据存储加载拆分/路由图像会阻塞UI线程。 而且我什至还没有进入后台线程管理的更高级的功能。

开发Apple Watch扩展应用程序也很有趣。 我想让它尽可能简单,因为老实说,由于手表上第三方应用程序的加载时间,您实际上只能拿起手机。 当前,它只是用作运行状态的快速状态指示器,您可以通过强制触摸菜单执行诸如拆分,暂停等操作。 将来,我可能会考虑向手表应用程序添加更多独立功能。 但就目前而言,我认为它运行良好(只要您的手机在附近)。

这可能不是最好的活动指示器,因为它包括库提交(我使用了1个cocoapod,RSKImageCropper)和情节提要,这些情节提要增加/删除行。 但这给出了我随着时间的推移在该项目中活动的总体思路。 即使这个项目不是在宣布奖学金后才构思的,但过去的两周绝对是一次按时完成任务的大型补习班。

未来发展

我计划继续开发Z Split,并在未来几周内将其提交给App Store。 我想补充很多功能,在整个奖学金期间,我基本上只能达到最低要求的功能集。 我要添加的其他功能包括:

  • iCloud同步
  • 移交支持
  • Apple Watch应用程序上的更多功能
  • 共享跑步功能
  • 创建路由后可以对其进行编辑(如果要更改顺序,则具有复制功能)
  • 地图集成可自动拆分基于位置的活动
  • 润饰UX,添加一些声音和精美的动画,使事情变得更讨人喜欢
  • 添加更多的运行控制按钮,例如撤消,跳过。
  • 运行页面上有更多静态信息。 黄金分割,与最佳分段的比较,可能节省的时间,比最后分段节省的时间等。在这里有很多工作要做。
  • 有关保存的运行历史记录的更高级的静力学。 根据以前的运行情况,可能会生成许多有趣的信息,因为它们存储在Core Data中。 只是要写一些查询。
  • 代码重构

最终……OS X版本! (手指越过UXKit进入Mac)

另外,对于应用程序,我还有很多其他想法,我将开源我一直在努力的OS X应用程序。 敬请关注。 😉

即使我没有获得奖学金,这仍然是一次了不起的经历,这是激发我动力的好方法!