I made an app

我的第一个App终于提审了。

从2015年开始,我就念叨着要做一个App;而2016和2017年的年度目标之一就是上架一个App。但直到现在,2018年,我才真正完成我的第一款App。

iOS工程的本地化-Swift

应用如果需要根据设备语言显示不同的语言,就需要进行本地化的工作。就iOS工程而言,需要本地化的内容主要有:文字、图片、语音。一般而言,图片和语言的本地化,都可以转化为实质上的字符串的本地化。

  • info.plist本地化
  • 代码字符串本地化
  • storyboard, xib文件本地化
  • launchScreen.storyboard本地化
  • 图片本地化
  • 一次性导出本地化文件
  • 新增内容的本地化
  • 多人协作下使用自定义Localizable.strings文件

仿照微信WebView实现ProgressBar

两种进度条逻辑

在网页中,一般我们会用顶部进度条来表示当前网页加载的进度。这里最常见的就是像Safari或Chrome浏览器那样的,用真实的进度百分比来更新进度条。当网速较慢时,进度条几乎完全不动;当网速较快时,进度条则会从大约20%位置嗖一下快速变为100%。

还有一种,就是微信App里的网页加载进度条。这里的进度条反映的不是真实的加载进度,其设计初衷应该就是让网页加载『看起来』更快。经过观察,大约是这样的一个逻辑:

苹果内购接入的坑与核心流程 - Swift

通过苹果开发文档、搜索与挣扎摸索,我已经在App上实现了【消耗型商品】的内购。总结流程如下:

  1. 完成必须的准备工作
  2. 用有效的商品id创建SKProductRequest请求苹果服务器返回商品(SKProduct)。
  3. 用返回的有效的商品创建payment,并将payment加入苹果的支付队列。
  4. 监听队列,并根据监听到的交易状态进行适当的处理,尤其需要在交易完毕时关闭交易。

自学路上的坑01 - Scheme勾选项带来的一些列问题

如果你的问题在网上找不到,那一定是你犯了一个低级错误。

结论

Edit Scheme中勾选Malloc Stack会导致每次Xcode覆盖安装App都预先占用一定量的数据存储空间,且由于某种原因,本来每次存储几十KB的数据结果占用了几十MB;同时,这个勾选项还会导致Instrument - Leak界面出现名为<Allocated Prior To Attach>的Leak。

Edit SchemeZombie Object调试结束要记得关掉,否则会在Instrument - Leak界面产生大量的名为Zombie Object的Leak。

自学编程6年,从入门到放弃

我会用4种编程语言写出Hello World!

2013年 C语言

自学编程的想法,最早应该可以追溯到2013年,证据就是我于当时写下的博客,以及博客中提到的新买的、后来被村长带走的《C语言编程》。我已经记不得当时为何要学编程,为何要从C语言开始,以及那本书我看了多少。

不过,打出上面最后一句话后,我还是想起来了:当时我没能用C语言打出Hello World!就放弃了,因为没弄好编译器。

一天

我下楼去买可乐。

走下楼梯时,看到楼梯上靠墙坐着一个头发花白的中年人。他低着头,在玩开心消消乐。我走过了,却还是忍不住回头看了他一样。他很严肃。

这是我今天喝的第三罐可乐。可乐倒进嘴里,苦味已经盖过了甜味。我只能喝可乐。喝酒太辣太苦,而我也没有配得上酒的忧愁或把酒言欢的朋友。我有的只是这种说不出是甜还是苦的平常生活。

Core Data入门

在iOS App中,如果要存储的数据量比较大,就会使用Core Data。这里汇总了下使用Core Data的基本方式。

我现在相信的

尽管对立的理论都能找到足够多的论据和拥趸,每个人,包括我,还是会对某一方的理论更为认同。尽管这种认同并不能增加理论的正确性,理清自己认同的东西还是很有必要。