# 如何零基础学开发，一个月做出被苹果推荐的 App？

- 作者：许仙人
- 发布时间：2016-10-17 21:11
- 原文：https://www.ifanr.com/app/730730

![%e7%85%a7%e7%89%872](https://s3.ifanr.com/wp-content/uploads/2016/10/照片2.png)

> 作者简介：韩重赞，独立开发者。零基础学习开发，用 4 个月的时间制作出「0528」「恋人清单」「开垦世界」这 3 款应用。其中，「恋人清单」曾被 App Store 首页推荐。

前段时间，我在 AppSo（微信号 appsolution） 分享了自己独立开发的一款游戏——「开垦世界」。

在文章留言中，发现有很多人惊讶**我为何能 4 个月可以做出 3 款不错的 app**。除此之外，还收到许多关于「零基础学开发经验分享」的请求。

![%e5%9b%be1](https://s3.ifanr.com/wp-content/uploads/2016/10/图1.png)

在被大家的学习热情感动之余，我写了这篇文章来分享我的开发学习经验。

### 入门前你需要知道这些

在分享之前，我列出了学开发的一些先决条件，估计也是很多人想问的问题：

**Q1：真是零基础学开发，而不是零基础学代码？**

很多人认为，零基础学代码，很可能是之前有学过或做过其他领域的开发，如 PC 端开发、后台开发，现在来重新学习移动端开发。

如果你之前没接触开发，也没关系。

本文是针对的是零基础，完全无开发经验的人写的。

**Q2： 我现在的专业/职业，跟程序员没任何关系会有影响么？**

说说我自己吧，我的专业是工业设计，职业是 UI 设计转产品。

你说和程序员有关系么？好像有那么点，至少**我懂得什么东西实现不了，什么东西难实现，什么东西容易实现**。

而你可能是运营专员，可能是银行柜员，也可能是卖菜的。

学代码这事，打个比方就是我是一个用过冰箱的，你是一个没用过冰箱的，现在都要去造一个冰箱。不管是那种情况，我们彼此之前的路途相差并不远。

**Q3： 英文基础不好学得来代码么？**

还是说我自己，我高中英语常常全班倒数，大学英语没超过 65 分，英语四级刚过及格线，六级呵呵。

所以你觉得呢？

**Q4： 数学基础重要么？**

我高中时数学算好的，大学因为是工业设计，只上过一学期的高数。

其实在大部分情况下，学代码只要有初中级别的数学知识就好了。

**Q5： 学代码是更像学英语还是学数学？**

这个也是我没学代码前，一直萦绕在心头的问题。

现在我的感觉是，一开始**你会觉得像在学英语，后来会觉得像在学数学**。写代码很多情况有点类似于做数学证明题。

**Q6： 需要哪些硬件设备？**

学 iOS 开发，一台 Mac 和一部 iPhone 真的是硬性条件，没办法（啥，你说黑苹果配 iPod touch？我觉得认真点还是算了吧）。

学安卓要求会低一点，一台普通 PC 和一部 Android 机就可。

**Q7： 需要会科学上网，会用 Google 么？**

我家里没搭梯子，一直用的国内某搜索引擎。

如果你喜欢搭梯子和看英文文档，也是极好的。不喜欢也没什么可耻的，能找到知识，学到知识，会用知识才是本质。

**Q8：做 iOS 是学 Swift 好呢，还是 Object-C？**

有很多人说，Swift 强势来袭，没必要学 OC 了。

我也在工作的时候曾花了几个晚上，学过一点 Swift。不得不说，Swift 的程序逻辑真的很人性化，很简洁，很优雅。但是，现在学习的话为时尚早，不论是教学视频、demo 例子，还是疑难解答都少的可怜。很多时候，你想要一个效果都找不到资源来做。

而 OC 的话，已经非常成熟，从小白到高手之间的所有资源，网上都找得到。

**Q9： 需要看什么书，有什么教学网站推荐，甚至是相关学习 app？**

最后这部分，估计是大部分人最想知道的。

**书籍：**

初学者可以先看看《Objective-C 基础教程 第 2 版》这本书，我当时看的是电子版，上下班时在地铁上用手机看。看了几天，大概到书一半内容的时候就云里雾里，完全看不下去了。我尝试过从头开始看，还是不行。

但是没关系，这很正常，你只要对 OC 这门语言有一定印象就行。就像一个冰箱，你知道它大概多大、多重，有什么形状等信息就好了。

**教学网站：**

我只看过极客学院和慕课网的，里面的教学视频良莠不齐。

我看过几个 OC 入门系列。每个视频的时间都不是很长，大概 10 分钟到 30 分钟，照着里面的步骤，依样画葫芦做下来就好了。

一开始很简单，后来的比较难，学完一遍就忘了，自己完全不知道怎么写。

但是没关系，这也很正常。你只要对 Xcode 这个工具有一定的印象就行了。就像一个冰箱，你知道它需要用电，可以冷藏，可以冷冻啥的这些信息就好了。

**论坛和资源：**

GitHub 是程序员们的乐园，但小白看一下就好了，你可能很久以后才会真正用到；

CocoaChina 是不错的论坛，小白也可以看看，以后有问题可以去这里；

Code4App 上有很多 demo 例子，入门之后做一些好的效果，可以去这里看看。

**但一定要切记，真正动手做东西才是成长最快的方式，看书、看视频、逛论坛都只是辅助而已。**

![%e5%9b%be2](https://s3.ifanr.com/wp-content/uploads/2016/10/图2.png)

看到这里，如果你觉得自己有这些条件和觉悟，那就可以继续接着看，我做第一个 app 的经历。

### 我的第一款 App 开发经验

注：下面的内容会涉及到一些 iOS 的开发术语，如果你没有接触过 iOS 开发，可能会看不懂，我尽量用最简单的话来说明。

**经验一：不要选择一个超出能力范围太大的 app 来做，先做一个技术含量最低的产品练练手，增长自信心。**

2016 年的 6 月 16 日，我下定决心开始我的独立开发之路。

当时，虽然自己在过年前后看过一本入门的书和一些教学视频。但小半年下来，我已经忘得一干二净，甚至连 Xcode 的打开新建流程，还是找了之前的网页书签重新练了一遍。

我知道以我那时的水平，做个拍照 app 简直异想天开，估计连记事 app 也够呛。

我又急于做一个成品出来，这个成品不能是烂大街的计算器、天气预报这类，没有发挥余地的 app。所以，**这个成品必须对技术要求很低，可以用其他比如创意或设计来弥补**。

看着自己手机里上百个 app，突然，我看到了一款符合目标的文字冒险游戏—— [Lifeline](http://www.ifanr.com/app/712267)（生命线）。

如果剔除掉 Lifeline 的一切辅助功能，如推送、模式转换、语言更改等，它的核心技术点其实很简单，就是一个显示文字的视图和两个增加文字的按钮。

![3](https://s3.ifanr.com/wp-content/uploads/2016/10/3-10.jpg)

所以，我只要实现「点击一个按钮，让视图加一行字」这个功能，基本上就可以做出一款像 Lifeline 一样的 app 了。

（这是我当时真实的想法，后来发现核心技术远远不止这些，只能说幸亏当时这么单纯，不然就不可能一步步做下去了。）

**经验二：一切以用户体验为中心，以目标产品为大方向。一步步从易到难解决问题，各个击破。沉迷于技术研究或设计细节只会误入歧途。**

确定好产品方向之后，我开始制作 demo。

打开 Xcode，根据网上教程往 Storyboard（可以往里面拖各种控件的可视化工具，对新手很友好）上拖了一个文本视图和一个按钮。

我先在这个文本视图里打上一行字，如「苟利国家生死以」。接着要做的事就是，点这个按钮让文本视图增加第二行字「岂因祸福避趋之」。

我的直觉告诉我，这件事应该分为两个步骤：

1. 先学会如何点一个按钮触发一个效果
2. 再学会做一个效果，让文本视图加一行字

于是，我在某搜索引擎上搜索「iOS 如何点击按钮触发一个事件」，点开了几个搜索结果，找到一个看起来挺靠谱的教程，就照着做。同理，我又把加文字的功能学会了。

很快在这个视图里，就出现了两行字「苟利国家生死以」、「岂因祸福避趋之」。我每次点一下按钮，「岂因祸福避趋之」就会出现。

但是，我发现了一个问题：每行字挨得太近了。我很聪明地在「岂因祸福避趋之」前面加了两个回车符号，看起来就好多了。

![%e5%9b%be5](https://s3.ifanr.com/wp-content/uploads/2016/10/图5.png)

在欣喜之余，我又发现一个问题：当我按钮点得多了，新增的「岂因祸福避趋之」会超出文本视图区域。难道让用户每次点一下按钮，然后手动滑上去么（太蠢了）？

我回头看了一看 Lifeline，发现他会把新增的文字顶上来，这样，就可以看到最下面的那句话了。

我又去网上搜教程，很快我就知道了让文本自动顶上来的方法。

**经验三：做好 demo、设计稿、其他素材的准备，让你在学习开发的过程中没有后顾之忧，有万事俱备只欠东风之感。**

就这样，我根据心里想的产品原型方向，一步步完善这个 demo。**每当我遇到一个问题，就去找资料搜教程**。解决完之后无比兴奋，但很快又会陷入新的难题当中。

在如此循环 N 次之后，终于完成了一款小明上学被车撞的超简单文字冒险游戏。在有了这样一个 demo 的基础上，我相信，要做出一个像 Lifeline 一样的游戏只是时间问题了。

所以，我开始放心地设计 UI 和编写故事，花了大约 4 天时间，经历了反复修改设计稿和小说情节的痛苦之后，一套 UI 和一纸故事文档已准备完毕。

![%e5%9b%be6](https://s3.ifanr.com/wp-content/uploads/2016/10/图6.png)

**经验四：一个好的老师是成功的一半，但不要一味的靠别人指点来解决问题，做伸手党只会让你毫无进步。**

在接下来没日没夜的十几天时间里，我遭遇了一个个更高层级的技术挑战：

- 如何使用 tableView
- 如何控制剧情的显示
- 如何保存数据到本地
- 如何删除数据
- 如何加背景音和点击音效
- 如何加 GIF
- 如何打包并提交 app

在此期间，我也数次遇到寻遍各种资料，也找不到解决方法的情况。但幸运的是，我的一个程序员朋友每次都能出手解决我的问题，并细心告知我其中的原理。

就像七龙珠里的设定一样，当赛亚人濒死时如果有幸（比如吃仙豆）死里逃生，就会成长很多。如果没有这位朋友，我可能已经死了不知多少回了。

就这样，2016 年 7 月 12 日成功上线了我的第一款产品——「0528」。

**从 6 月 16 号正式走向独立开发的道路，到完成这款游戏，总共用了不到一个月的时间。**

在这篇文章中，我回顾了自己从零开始学开发，以及第一次独立开发产品的所有经验。也希望自己的经验，能对想要零基础学开发的朋友提供帮助。

记住，**真正动手做东西才是成长最快的方式**。

**本文由让手机更好用的 AppSo 原创出品，关注微信号 appsolution，回复「开垦世界」获取本文作者韩重赞最新开发的游戏和背后的理念故事。**

![AppSo qrcode signature](https://s3.ifanr.com/wp-content/uploads/2016/09/AppSo-qrcode-signature.jpg)
