阅读更多

3顶
2踩

移动开发

原创新闻 30天从0开始学习Swift

2015-10-29 16:12 by 副主编 mengyidan1988 评论(3) 有10474人浏览



确切地讲,我是30天前开始学习swift的。3天前,我开发的第一个应用程序通过了苹果公司的审核。相比其他事情,这一开发过程并不算什么,但是对我而言,却是一个巨大的成就。

我没有计算机的学位,也没有专业的开发经验,但是在过去的5年中,我一直在一个开发团队中担任产品经理。因为兴趣,曾经也用Ruby写过一些Rails应用。我一直想和我的工作有一个更直接的联系,所以我决定开始编程。

为什么选择iOS和Swift
  • 移动市场是巨大的;手机是个人的。我想开发一些对用户切实有用的软件,并且我非常喜欢人们与手机之间的亲密关系。我们的手机非常了解我们——它知道我们什么时候醒来,什么时候睡觉,在什么位置,是怎么到达这个位置的,我们的日常安排、我们与朋友、家人的谈话内容,甚至更多。因为我一直使用苹果产品,所以很自然地选择从iOS开始。前段时间,我尝试了下Objective-C,发现它的地位正在受到威胁,因为Swift一直很受欢迎。
  • 良好的约束。专注于苹果平台和在适用于口袋般大小的屏幕开发提供了良好的约束。这些约束让我很好的专注在需要学习的技术上(相对于永无休止的网页开发),还促使我把创造力聚焦在用户体验上。
  • Swift是一门快速进化的语言。我喜欢看着事物从底层开始成长和发展,并参与其中,这也是我为什么喜欢在初创公司里工作的原因。有些事情能够使一门不成熟的语言日趋完善,我加入到一个小团队一起去尝试解决那些有待完善的问题。我很兴奋能有可能为这门语言和社区做出个人的贡献。


入门资源

7月1号当我开始我的学习之旅时,我已经有了一个开发一款简单应用的想法。就我的初衷和当时学习情况而言,带着这一想法是非常有帮助的。

我花了很长时间在网上搜索有关Swift的最好的资源、教程和课程。对于初学者来说,网上有很多好的资源, 但大多数都是假定你从没有看过一行代码,并开始得非常缓慢,比如介绍什么是变量,变量如何跳转等。另外还有一些都是技术文章和参考资料(包括苹果的官方文档),这些貌似只有那些有丰富经验的或者是从Objective-C转到Swift的同学能够看得懂。

最终,我还是找到了适合我这样初学者的资源,以下是我找到的一些最有用的:
  • Paul Hegarty的斯坦福课程:[url="https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099"]Developing iOS8 Apps with Swift[/url] (用Swift开发iOS 8应用)。这个在iTunesU上是免费的。我是从学习这个课程开始的,并仅在一周之内就完成了前5节课和第2个作业。课程很快就变得很有挑战性了,所以当我小试牛刀之后,我暂停了我的进度,去学习更多的实用教程。但是这真的是一个很棒的课程,Hegarty教授真的有两把刷子,以至于我现在都打算重新回顾一遍。如果你被一个问题难住(不要去iTunesU上找解决方案),这(http://cs193p.m2m.at/)是一个很有帮助的网站,会解释每个问题并有解决方案。
  • 苹果的官方文档:The Swift Programming Language (Swift编程语言)。如果在这之前你有编程经验的话,相比与苹果的iOS SDK文档,这本关于Swift语言的书还是很容易读的。它清楚而简洁,可以快速浏览,当你遇到问题时,可以很快地找到对应的参考概念。这个网站(Big Nerd Ranch)为他们的Swift训练营成员提供了一些课前文件(pre-reading assignment),包含了一些类似概念的内容,还有面向初学者可实现的实例。
  • www.raywenderlich.com。这个看起来像是个花花公子的个人网站,但是不要被它迷惑了。这个网站是我访问过的最好的学习资源网站。如果你从没有创建过iOS应用,就从注册这个网站开始吧,你可以获得简报和经典的教程——这些教程会让你感到如史诗般。只要你愿意,你绝对可以在一天之内完成它。这些教程使我第一次投入到神秘的iOS开发中,它揭开了许多很容易让初学者气馁的谜团,当我使用Xcode编程时,它会给我很多特性和功能上的启发。当你完成第一个教程之后,网站还会提供大量额外的免费教程。我可以从中挑选一些去学习,以满足我开发应用的需要。这里有如此多的很棒的资源,让我迫不及待的要去学习。


我大致的时间安排:
  • 第1周:入门。我快速地投入到斯坦福课程的讲义和任务中,我通读了大量关于Swift语言的书,并且完成了raywenderlich.com网站上的经典教程。在这之后,我感觉我已经准备好开始开发我的应用了。
  • 第2-3周:磨砺。就从我开始开发我的应用的那天起,我也开始了在缅因州的一艘帆船上的12天之旅。与咖啡和平静的水面相伴,我每天早上都会花几个小时在我的应用上。由于没有网络,我唯有专注在代码上,而不是在40个网页之间来回切换,这使我停下来去思考我在尝试做的事情及其原因。这些天我发现我一直在考虑我的代码,并迸发出新的思路,并渴望在第二天早上尝试它们。
  • 第四周:我真的做到了。经过一段缓慢的学习过程,我进入了高产阶段,当我一天的成果超过之前几周的总量时我倍感惊讶。最后一天,我清理了我的代码,并跑通了一些诡异的边界测试用例,这让我出奇的满意。作为一名产品经理,每当我把任务分配给很多工程师时,我会为此感动担忧。当我有能力自己去完成时,我感觉非常棒。最后我在Sketch上创建了一个简单的应用图标,根据引导把应用上传到iTunes Connect上,并提交给苹果审核,不到24小时,我就通过了审核。

7月(通过RescueTime记录),我在Xcode上花了25小时,在iOS模拟器上花了2小时52分,在Preview上花了4小时23份(阅读教程),还有51分钟花在Stack Overflow上。另外我还在手机上读了许多资料。

Swift 社区

为了融入Swift 社区,我还做的其他的一些事情:
  • 订阅We ❤ Swift 的简报
  • 订阅Dave Verwer的iOS开发周报
  • 关注Medium网站的Swift标签
  • 收听raywenderlich.com的播客
  • 通过meetup寻找志同道合的人聚会(我加入了布鲁克林Swift开发组iOSoho组)我参加的第一个线下聚会是由Dave Grandinetti组织的,叫做“Learning Swift the Euler Way”的谈话式聚会。Dave开发了一个工具,我很高兴可以去看看这个“EulerKit”,它提供了一些辅助方法可以协助你解决Project Euler problems。我已经完成了前两个,但是之后会变得越来越难。
  • 加入学习小组:(1)helpMeCodeSwitf 是我无意中加入的一个小组织, 现在只有两三个人活跃其中。但是他们超级友好,从不会因为问他们一些菜鸟问题而恼火。(2)swift-lang slack是一个大一点的组织,它可以给我一些即时的反馈,但似乎没有太多的初学者,这让我不敢轻易加入他们的交谈。或许我应该要求他们为初学者创建一个频道。

以上是我发现的有助于学习Swift的资源。如果你有其他好的资源,请添加评论并注明你喜欢它什么以及好在哪里(译者/程林)。

原文来自:Medium
  • 大小: 13 KB
3
2
评论 共 3 条 请登录后发表评论
3 楼 freedom_melody 2015-11-06 09:31
对于这种文章,我想说,然并卵
2 楼 krystal_0424 2015-11-03 16:52
赞赞赞赞赞
1 楼 restkuan 2015-11-01 21:38
好像这里有全文翻译 http://gold.xitu.io/entry/5632e0a700b05c9d2b1fa218 还没有原文链接

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 如何做test review

    Test Review Guidelines给出了一些review unit test时的一些准则,我简单翻译一下。 可读性: 确保setup和teardown方法没有被滥用。最好用factory method来提高可读性。 确保每个test只测试了一件事。 检查是否符合好的,一致的命名规范。 确保只有有意义的assert message才被用到,用有意义的test名称...

  • 思维导图的一个应用实例

  • 软件质量保证的最佳实践之一:Code review和Case review

    上次翻译了一篇文章—— Bug分析:为bug预防奠定基础, 强调软件缺陷的预防。软件质量是构建起来的,由软件开发的整个过程质量所决定的,软件质量肯定不是通过测试测出来的。所以软件缺陷的预防自始至终是重要的。除了缺陷分析,另外一个很重要的实践就是:代码复审(code review)和测试用例的复审(Test Case review)。1.Code review在IBM、微软等很多公司都有一个

  • 15个最佳的代码评审(Code Review)工具

      代码评审可以被看作是计算机源代码的测试,它的目的是查找和修复引入到开发阶段的应用程序的错误,提高软件的整体素质和开发者的技能。代码审查程序以各种形式,如结对编程,代码抽查等。在这个列表中,我们编制了15个最好的代码审查工具,这将有助于开发者节省代码审查时间。 您可能感兴趣的相关文章 Web 前端开发人员和设计师必读精华文章推荐 精心挑选的优秀jQuery Ajax分页插件和教程 ...

  • 几款jQuery右键菜单插件介绍

    在网页中使用自定义右键菜单,实现上皆为使用javascript禁用浏览器默认的右键菜单,然后在网页中响应鼠标右键事件,弹出自定义的菜单。...以下列举几款比较成熟的jQuery右键菜单插件,我们将逐一介绍,请读者自

  • 前端常用js插件

    Node 的 CMS 框架模板引擎Flux数据可视化时间轴编辑器文件函数式编程响应式编程数据结构日期字符串数字存储颜色国际化和本地化(I18n And L10n)类控制流路由安全性日志正则表达式媒体语音命令API视觉检测浏览器检测...

  • jQuery梳理总结

    代码简洁 ...两个版本比较常用,每个版本都有两种类型,jquery.js开发版供开发者学习,jquery.min.js压缩版,体积更小页面加载更快,一般实际开发采用压缩版。 1.x兼容IE6-8 3.x虽然新但是不兼容IE6-8 ...

  • [轉]几款jQuery右键菜单插件介绍

    From : ...   在网页中使用自定义右键...以下列举几款比较成熟的jQuery右键菜单插件,我们将逐一介绍,请读者自行比较,并根据自己的需求选择。 1.VERY SIMPLE CONTEXT MENU -Intekhab A Rizvi Project Page: ...

  • 看不完的那种!前端170面试题+答案学习整理(良心制作)

    jquery ui则是在jquery的基础上对jquery的扩展,是jquery的插件。jquery ui提供了一些常用的界面元素,如对话框,拖动行为,改变大小行为等。 27.如何用原生JavaScript实现jquery的ready方法 $(document).ready()在...

  • php移除所有子节点,php - JsTree delete_node()删除子节点 - 堆栈内存溢出

    我已经创建了一个带有jQuery树插件JSTree,PHP和MySQL以及上下文菜单的树视图,用于创建,重命名和删除节点。 treeview的所有节点都取决于服务器端的处理。这是我数据库上的表结构:CREATE TABLE IF NOT EXISTS `...

  • 最全面、最详细web前端面试题及答案总结

    fixed:指定元素相对于屏幕视⼝(viewport)的位置来指定元素位置。元素的位置在屏幕滚动时不会改变,⽐如那种回到顶部的按钮⼀般都是⽤此定位⽅式。 sticky:粘性定位,特性近似于relative和fixed的合体,其在实际...

  • 前端非框架类知识点汇总

    <link rel="stylesheet" href="css文件路径">css引入 <...</iframe> 图片标签: img src="" title="" alt="" src属性 是指图像文件路径 ...title属性 是在鼠标悬停的时候显示 srcset属性 是在不

  • 【前端】170题面试题和学习答案,学不完的那种

    jquery ui则是在jquery的基础上对jquery的扩展,是jquery的插件。jquery ui提供了一些常用的界面元素,如对话框,拖动行为,改变大小行为等。 27.如何用原生JavaScript实现jquery的ready方法 $(document).ready()在...

  • Js_Study

    JS三种书写位置8. JS注释9. JS输入输出语句阻止链接跳转变量1. 什么是变量2. 变量在内存中的存储3. 变量的使用4. 变量语法扩展01-更新变量02-同时声明多个变量03-声明变量特殊情况5. 变量命名规范数据类型1. 数据...

  • javaWeb学习笔记

    光标类型 边框圆角 溢出部分显示 元素本身隐藏 元素整体透明 弹性盒子display:flex 网格布局display:grid 居中方法总结 水平居中 垂直居中 JavaScript js引擎运行 引入方式 基础语法 输出语句 变量 常量 数据类型 ...

  • 前端学习.

    CSS的三大特性 CSS盒子模型 CSS的浮动 CSS定位 CSS高级技巧 精灵图 字体图标 CSS三角 CSS用户界面样式 vertical-align属性应用 溢出的文字省略号显示 常见布局技巧 CSS初始化 HTML5 和 CSS3提高 HTML5的新特新 CSS3...

  • javaScript 代码 总结

    node.insertBefore(child, 指定元素) 方法将一个节点添加到父节点的指定子节点前面。类似于 CSS 里面的 before 伪元素。 3. 删除节点: node.removeChild(child) 方法从 DOM 中删除一个子节点,返回删除的节点。 ...

  • 总体的一些了解与规则

    [可选]信息提示的显示位置,显隐方式,及[info/correct]方式时自动关闭延时(毫秒) keys : {statusCode: ' statusCode ' , message: ' message ' }, // [可选] ajax回调函数的key ui : { windowWidth : 1200 ...

  • 复习题

    Cookie是由服务器端生成的,发送给User-Agent(一般是浏览器),(服务器告诉浏览器设置一下Cookie),浏览器会将cookie以key/value ...http是无状态协议 状态都是由Cookie来控制的 Cookie的特点 1.有生命周期 2....

  • python基础整理3——前端

    主要应用在选择父元素下的子元素,或者子元素下面的子元素,可与标签元素结合使用,减少命名,同时也可以通过层级,防止命名冲突。 举例: .box span{color:red} .box .red{color:pink} .red{color:red} <span>...

Global site tag (gtag.js) - Google Analytics