[Android开发学iOS系列] 和一个真正iOS开发的区别?

和一个真正iOS开发的区别?

学习iOS的这段时间, 我一直在思考和感受着自己和一个真正做了几年iOS的dev之间的区别.

同时也在反向思考, 我自己和一个新学Android的人, 又有什么区别.

也许在技术转型中, 这些学习的思考和阵痛都是有共性和不可避免的.
在此分享一下感受, 如果有人也有技术转型, 可以看到有些心路历程是不可避免的, 不必焦虑.

当然我也在思考一个技术人是不是应该不断转型, 还是在一个方向深耕, 这是另一个复杂的话题了, 这里按下不表.

工具环境类

工具和环境, 这是上手一个新技术要面临的第一个问题.

比如:

  • IDE使用和快捷键, 如何debug.
  • build不过的种种原因等.
  • iOS的真机调试有更多的限制, 需要profile证书等, 不像Android似的插上线就能build.
  • tv如何pair.
  • pod和swift package这两种不同的依赖, 都是如何引用本地和更新的.
  • 单元测试不能连着真机跑, 要在模拟器上跑等.
  • Xcode的一些设置和format工具的使用.

幸运的是, 这些问题基本上上网搜就会得到答案, 如果同事有空就可以帮忙解答.

工具使用和build相关的问题基本上解决几次就会记住, 不要被这些问题吓倒.
有时候因为Xcode的升级或者库的改动, 也会反复遇到各种新问题, 这时候冷静沉着, 搜索尝试就可以了.

语言类

其实任何现代化的语言都是讲道理的, 所以并不难学.
Swift和Kotlin很像, 可以类比着学.

确实会有一些不一样的语法和关键字.
我的建议仍然是跟上一条一样, 先学个基础, 就可以干活, 有些特殊的可以现学现查.

如果你工作在一份已有的代码库, 那就更幸运了, 里面充满了现有的例子.

有一些常用的套路, 比如if let, guard let, enum的取值.

还有delegation和protocol, extension等, 看代码就会发现这些是比较常用的.

还有可能会令初学者望而生畏的是, 一些UIKit的方法可能会出现一些古怪的符号, @啊#啊什么的, 那些也是记住固定的写法就行了, 都是固定场合, 没有什么特别可怕的.

但是如果真的遇到OC的代码, 还是有一点可怕的, 我还没学.

最后值得注意的是Swift和iOS中的代码风格和命名规范.
比如我曾经给一个方法命名getXXX()返回一个值, 被建议去掉get, 因为那是java和android的习惯, 他们习惯直接用名词. (但是除了get以为, fetch或者request等动词又可以用, 我不理解, 但是我尊重.)

代码风格可能每个项目都有自己不同的要求. 我还没有研究过到底哪个才是宇宙最正确.
只能铤而走险地尽可能遵守, 然后等待着下一个android写法被发现.

也不用特别担心, 只要代码清晰, 命名有意义, 问题不大.

知识类

知识类的学习似乎是非常的平面, 你不知道什么知识点, 你看了看文档/博客/视频教程, 你知道了, 学习完成, 技能点点上.
知识类的学习建议同样也是用最快的时间知道最基础的内容, 然后挑重点了解常用重要的, 其他遇到再说.

因为你可能没有那么多的时间, 你总是要有个优先级.

如果没有人或者什么任务给你划重点那么你可以自己划, 我比较幸运的是Android和iOS其实平行的两个平台, 那么我常常会想象如果我要给一个Android初学者制定学习计划我可能会让ta学什么, 从而去找iOS中对应的什么.

拿iOS来说, 它是一个mobile平台, 它有自己官方的UI类库, UIKit或者SwiftUI.
那我们就可以: 学UIKit的基础, 几个基本控件, 了解tableView, collectionView. 学习网络请求, 学习常用的库的使用.

这些都可以结合实际项目, 项目中用什么就优先学什么.

一个完整知识体系的构建是需要时间的.

其实我甚至有点怀疑”完整的知识体系”本身可能就是一个假命题. 即便在Android平台工作了这么些年, 其实很多方面我都不太了解, 因为没有实际涉足过, 所以也谈不上完整.
可能对Android来说, 我了解的只是一个知识的脉络, 知道哪一部分大概有些什么, 知道哪些地方是我的未知领域.

和有经验的iOS dev相比, 知识的缺乏确实会对工作效率产生一些影响.

  • 比如要我可能需要花一些时间了解一些基础知识和已有做法.
  • 在遇到问题的时候, 可能会因为一个我不知道的问题而卡住(比如单元测试挂了, 我在研究测试本身, 而实际上是因为选错了设备), 而对其他人来说可能很简单.
    对于知识来说最困难的部分是你不知道你不知道什么.

这些必经的过程都是没法避免的, 只能见一次学一次了.

通用编程逻辑

幸好还有一些通用的编程逻辑是适用的.
有经验的开发比纯新手开发的优势就是在这块.

面向对象的逻辑, SOLID原则, 代码清晰易读的规范等, 有很多的能力和经验都是可以复用的.

而且因为Android和iOS如此相像, 这部分可移植的经验还比较多.

比如页面切换, 网络请求和认证, 数据追踪sdk, 本地存储.
更广义层面的各种类MVVM模式, 模块化拆分等.
大体的套路都是类似的, 只不过是有具体实现方式的区别.

如果是前后端技术栈切换, 可能还会有一个整体思路的切换.

如果你是一个有经验的人, 那么换一个技术栈, 一定会有一些你可以移植复用的经验, 解决问题的思路等, 甚至你自己可能没有意识到.

心态

确实会有焦虑, 尤其是当自己碰到问题总是需要求助别人的时候.

为了缓解这种焦虑, 通常的做法是(听上去有点老套, 但是咱们复习一下):

  • 如果是通用问题, 利用搜索引擎, 和自己已有的经验和知识尝试解决一下. (如果成功了会增添自信心).
  • 合理提问题和求助于同事. 在不过多耽误人家时间的情况下, 并且提供一些有价值的线索. (另外, 找一些看上去和善的同事.)

在内心里合理化这个犯错以及提问的行为:

  • 每一次问题的提出和解决都是一个学习内化的过程.
  • 如果犯同样的错误也不用太自责, 记忆都是在重复中得到强化的. 并且确实有时候虽然被提醒过但是得自己亲自犯了错才会加深印象.
  • 保持空杯心态. 有时候会想到自己的工龄和年龄而焦虑, 但是空杯心态让我们保持年轻和活力.

虽然这块听上去像鸡汤一样, 但是我觉得还是挺重要的.

总结

其实对于一个有学习能力的开发者, 转换任何一个新的技术栈, 掌握基础和上手做具体的任务其实并不难. 只要任务拆分得足够细.

难的是一个全面的知识体系和实际上手的工作经验, 针对许多实际的困难问题的解决.
因为你并不知道有什么和用什么, 以及通常是怎么做的.
这些确实是需要时间慢慢积累的, 否则程序员的饭碗也太好抢了.

不断地学习确实是一个程序员(或者说任何职业)不可避免的事情.

以上, 一点不成熟的个人感受.

原文链接:https://www.cnblogs.com/mengdd/p/learnings-after-switching-to-ios.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:[Android开发学iOS系列] 和一个真正iOS开发的区别? - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • 使用SDLocalize高效完成iOS本地化国际化工作

    使用SDLocalize高效完成iOS本地化国际化工作 SDLocalize 该方案最大特点是对旧代码几乎没有较多修改就可以完成从单语言项目修改为多语言的项目。并支持XIB的控件本地化,无需创建不同语言版本的XIB文件。 SDLocalize的工作原理: 首先标记一组需要本地化的控件 然后在恰当时机(viewDidLoad),触发一组本地化任务(Then (…

    IOS 2023年4月17日
    00
  • [Android开发学iOS系列] Auto Layout

    [Android开发学iOS系列] Auto Layout 内容: 介绍什么是Auto Layout. 基本使用方法 在代码中写约束的方法 Auto Layout的原理 尺寸和优先级 Auto Layout的使用细则 重要的属性 StackView Layout Guide Performance Debugging What is Auto Layout …

    IOS 2023年4月17日
    00
  • xcode历史版本下载

    一、背景 较早之前做过一个项目,当时使用swift 3.x开发。 项目结束后就没再有新需求与更新。 但最近呢需要对项目的某些功能进行调整,项目又重新被拾了起来。 我们知道现在的swift 版本已经到了 5.x, 相应的语法上较 3.x版本也有了不小的变化。使用最新版本的xcode都已经不支持swift 3.x的 swift version. 所以目前面临两种…

    IOS 2023年4月27日
    00
  • 苹果的app上架被黑了怎么办?

      1、您的应用程序必须使用正式的图像。正式的文字,在上板时不要出现测试类图像,例如一个母亲婴儿商店,你上传了一个不相关的图片。或者用测试字眼写的图像,都不能。文本中也不能出现测试类的单词,如测试等。如果您以前在后台上传过测试字眼的产品,请先删除它并重新登录。 2、你的APP还没有完成,如果模块还没有完成,请隐藏这个模块,但不能出现“该模块正在开发”等词语。…

    IOS 2023年4月18日
    00
  • 【新技术】不用开发者账号申请ios证书真机调试

      虽然xcode现在可以免证书进行测试了,但众多跨平台开发者,如果还没注册苹果开发者账号。 想安装到自己非越狱手机测试是无能为力了。 不过新技术来了,只需要普通免费的苹果账号无需付费成为开发者就可以申请iOS证书打包ipa安装到自己手机测试! 没付费苹果开发者账号的,也能轻松调试自己的苹果APP。 当然如果要上架App Store还是需要注册一个付费的苹果…

    IOS 2023年4月18日
    00
  • ios animation 动画学习总结

    目录 一、前言 二、UIView Animation 2.1 简单动画 2.2 关键帧动画 2.3 View 的转换 三、CALayer Animation 一、前言 动画一直是 iOS 开发中很重要的一部分。设计良好,效果炫酷的动画往往能对用户体验的提升起到很大的作用,在这里将自己学习 iOS 动画的体会记录下来,希望能对别人有所帮助。 iOS 的动画框架…

    IOS 2023年4月18日
    00
  • iOS-Coretext 图文混排占位符上下偏移处理

    这里说的占位符,实际就是排版时需要展示的图片,图片基于占位符填充,那么处理图片时,怎么解决占位符(图片)的上下偏移在设置占位符属性时,我通过以下方法来实现它: + (NSAttributedString *)wxImageAttributeCoreTextFromPaperQuestion:(WXTKCoretextQSourceImg *)image{ C…

    IOS 2023年4月17日
    00
  • graphhopper-ios 编译过程详解

    一、写在前面 GraphHopper 是一个快速且高效的路径规划引擎,它默认使用OpenStreetMap和GTFS数据, 也可以导入其他数据源。它可以用作java库或独立的web服务器,去计算两个或多个点之间的线路的距离,时间,转弯指令和许多道路属性。除了“A-to-B”的路径规划能力之外,它还支持“snap to road”、等时线计算、移动导航等。 g…

    IOS 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部