一周前,我对 Swift 一无所知。如今,我的 Mac 和测试设备上都已经有一个可以运行的 iOS 应用了。我仍然对这一切是如何组合在一起的感到有些惊讶。
我更偏向于产品和 GTM 开发,经常会针对特定问题或客户项目写代码。我当然安装了 Xcode,但主要是因为我需要它来测试东西。我大部分时间都花在其他语言和生态系统上。但上周,情况发生了变化。也许是因为对照片管理应用感到失望,又或许只是出于好奇,我突然想到:“开发一个简单的 iOS 应用能有多难?” 答案是“比我想象的要难”和“比我预期的要容易”。
最初只是一次随意的探索,却变成了一场为期三天的紧张旅程。我的目标很简单:构建一个可以管理照片、查找重复项并支持滑动和删除图片的工具。这个过程变成了 Cursor、我和 Xcode 之间有趣的舞蹈。我从 Cursor 开始,反复交流想法,获取样板代码和结构建议。然后,我将这些代码片段导入 Xcode 并进行扩展。这成为了我的节奏:我和 AI 合作,然后我进行验证、调试和研究。这比单纯的“氛围编码”要慢,但比从头开始学习 Swift 的传统方式要快。每条错误消息都变成了一堂小课。每次成功的编译都感觉像是一次小小的胜利。
让我印象深刻的一点是 iOS 提供了如此多的开箱即用功能。原生库、API——如此多的功能等待着我去添加。对于来自其他平台的人来说,这感觉简直太容易了。然而,我随后会遇到一些 iOS 特有的问题——比如代码签名、目标管理或部署配置——这让我意识到每个平台都有自己的学习曲线。这些并非编码问题,而是生态系统的挑战。说实话,人工智能(Gemini)在这里也发挥了巨大的作用,它指导我完成了一些设置步骤,而这些步骤如果单凭文档来理解的话,可能要花上几个小时。
并非一切都一帆风顺。项目开始两天后,我发现了苹果CLGeocoder
的一个有趣特性。我之前用它做照片管理器的“地点”功能。如果设备或网络被检测为中国地区,它就会切换到使用高德地图,并且只对中国境内的位置进行反向地理编码。这给我带来了问题(也会影响中国用户)。解决方案需要构建一个回退系统:捕获特定的错误代码,然后切换到另一个用于国际位置的反向地理编码服务。这类边缘情况让整个过程更加愉快。
在开发过程中,我一直在思考这个领域现有的应用。大多数照片管理工具(类似于我正在开发的这个)都按周或按月收费,而这些操作其实都很简单。我见过一些应用每月收费 5-10 美元,用于批量删除和重复检测——一旦你理解了 API,这些功能实现起来其实并不复杂。这让我很困扰,不是因为这些开发者不值得赚钱,而是因为定价模式与实际交付的价值感觉脱节。为什么清理照片要每年花费 59 到 99 美元呢?我打算一次性收费,比如 2.99 美元,然后就完事了。没有订阅,没有免费增值技巧,也没有暗箱操作。只是一个名副其实的工具,价格公道。
我对这个领域的研究越深入,就越能注意到其中的营销模式。整个生态系统中,似乎有一大堆公司(根据我与中国团队合作的经验,其中很多都在中国)都遵循着同样的套路:每年开发一堆新的实用应用,与外国演员合作制作炫目的广告,在元广告上投入巨资,并收取订阅费,而这些订阅费的设计似乎更多是为了获得经常性收入,而非为了公平定价。我见过这些广告——它们通常近乎荒唐,但确实有效。它们吸引了人们的注意力,激发了人们的好奇心,并推动了下载量。作为一个有营销背景的人,即使我不喜欢这种策略的执行方式,我也能够理解。然而,我没有营销预算,而且我对这种方法也不感兴趣。我的应用必须凭借自身实力取得成功。
使用人工智能进行编码提供了重要的见解。这并不是说人工智能总能写出完美的代码——它并非如此。它的作用是帮助你更快地迭代,更快地从错误中吸取教训。当我被一个概念难住时,我可以解释我想要实现的目标,并获得三种不同的方法供我考虑。当我遇到错误时,我可以将其粘贴进去,并了解可能出错的地方。当我想了解 iOS 设计模式时,我可以进行交流,而不是阅读厚厚的文档。然而,这也有局限性。对于任何涉及用户身份验证或敏感数据的事情,我不会使用代理人工智能。我足够了解人工智能在编码方面的局限性,如果你没有足够的经验来正确审核人工智能生成的安全代码,那么它会显得很危险。
这款应用的性能令人惊喜。WIP 应用在正常运行期间不会占用太多内存。CPU 使用率只有在扫描重复项时才会飙升——这很正常,因为它可能要处理数千张图片——但即便如此,它仍然在可控范围内。我一直在密切关注这些指标和线程,一部分原因是我可以做到(Xcode 让这一切变得简单),另一部分原因是我想了解我的代码选择的影响。
我觉得我已经完成了大概90%。核心功能已经可以用了,但我想进一步完善用户体验。我还没有为Apple开发者计划付费。整个体验让我不禁思考,为什么我等了这么久才尝试iOS开发。当然,学习曲线确实存在,但并非不可逾越,尤其是在有了AI作为学习伙伴的情况下。
这个项目最初只是出于好奇,后来发展成了一个可能真正能帮助到大家的项目。几年前,对于非 iOS 开发者来说,开发一个 iOS 应用需要花费数周时间进行设置、配置和概念学习。而如今,只要有合适的工具和不断迭代的意愿,几天之内就能完成。