afnetworking,Swift为什么在iOS开发中普及不起来

伏羲号

afnetworking,Swift为什么在iOS开发中普及不起来?

Swift 是苹果在 2014 年的 WWDC(全球开发者大会)上推出的新的 iOS 开发语言。

afnetworking,Swift为什么在iOS开发中普及不起来

Swift 是一种现代语言,相比于 Objective C 来说有许多新语言的特性,也更容易上手。

之所以还有很多大厂不使用 Swift 作为开发,主要还是因为许多历史原因。

首先,Objective C (以下简称 OC)兼容着很多旧的系统,多少年来他一直都没有什么大的变化。而 Swift 在诞生初期经历过很多的版本迭代,向下兼容性也并不好。可以这么说,Swift 3.0 之前的版本基本上每次升级就意味着重写一次代码。 Swift 之父在 Swift 推出 2.0 之后跳槽去了谷歌,对语言本身的稳定性也影响至深。

其次许多优秀的第三方库都是用 OC 实现的,比如著名的网络库 AFNetworking,SDWebImage 等。Swift 虽然这几年发展迅猛,也推出了对应的第三方库(比如 Alamofire,Kingfisher 等),但是开发人员需要一定的学习成本,企业在这些转化的过程中也需要付出一定的成本。可以这么说,如果不是新项目,大部分的企业还是选择用 OC 来作为主流开发语言。

大厂有很多线上正在使用的项目(历史包袱),仍然在使用 Objective C,完全使用 Swift 重构需要投入大量的人力物力,虽然 Swift 很优秀,但是重新上线意味着许多隐患。不到万不得已是不会冒这个风险的。

那么话说回来, Swift 真的有那么优秀吗?

笔者作为一个 iOS 五年多开发经验的人员,去年开始学习并使用 Swift,从体验感来说只能用两个字来形容:真香。

新的特性让开发人员可以更好的关注项目的设计和代码的书写,不用再被 OC 冗长的命名和陈旧的调用方式而困扰。

OC 没有命名空间,就导致很多类名需要加前缀,非常二。OC 没有可选类型,需要加大量的 if else 判空,稍有不慎就藏 bugSwift 的枚举类型非常的强大,可以帮助开发者更好的表达业务逻辑Swift 的 extension 比起 OC 的 category 方便太多,包括协议和枚举在内的多种方式都可以使用扩展来实现。Swift 的设计本身更适合函数式编程,也更适合面向接口编程,更容易装逼

除此之外还有很多对比,不一而足。

如果没有历史包袱,真的是十分推荐大家学习 Swift

小白能自学做app吗?

你好,很高兴回答你的问题,我是一个在IT业摸爬滚打6年的程序员。

为了开发App,我们应该了解和学习哪些技能?对于一个想开发App的小白,或者想在这个行业工作的小白来说,这个问题确实令人困惑。毕竟,App开发不是一件很简单的事情,有很多课程和内容需要学习。为了帮助解决这个难题,我简要总结了自己开发App所需的技能。

语言是App开发制作的基础。如果我们看计算机语言的类型,数量将非常复杂。无论是开发iOS还是Android应用程序,您都需要学习编程语言。当然,这是一个大范围的普遍情况。毕竟,每个方向的主要语言是不同的。根据自己的情况选择最好的语言,但是语言是编程的基础。

iOS开发学习路线

如何判断自己是否入门

是否了解Mac

是否了解Xcode

是否了解Objective-C

是否会使用UI控件.

iOS开发你需要具备以下技能

Xcode的使用

第三方库的灵活使用

AFN

MJRefresh

各种网站的使用

如何判断是否可以升阶

是否了解AFNetworking 的实现原理

是否了解SDAutolayout/Masonry 一种布局库的原理

是否能够处理基本的iOS崩溃原因/无法编译原因/无法上架原因?

是否拥有了一定的工作效率,稳定的工作效率.(而不是说,上面派了一个活下来,忙都忙不完,天天加班,还一堆bug)

是否能够处理第三方库引起的崩溃.

iOS开发进阶

应用的内存处理

应用的推送处理

应用的模块化/单元测试

应用的第三方集成/集中化管理/稳定迭代

阅读强大的第三方源码/拥有快速上手新的第三方库的能力.

能够接受各种新功能的开发(这里是指,即使你没有做过,但是你仍然可以凭借着学习,解决任何业务需求:例如:蓝牙.AR.摄像头.硬件交互.等)

清楚明白数据的传递方式,应用与后台如何交换数据,交换数据的过程,结果,格式.

多线程的灵活使用.

各种并发事件的处理/以及界面的合理性/流畅度

设计模式的灵活使用。

Android开发学习路线

基础部分:

扎实的JAVA基础,熟练掌握面向对象(OOP)思想,熟悉java序列化机制实现Android下IPC的机制。

好的开发习惯,一心追求流畅顺滑的UI体验,对代码有洁癖。

熟练掌握Android四大组件(Activity,Service与intentService,LocalBroadcastManager的BroadcastReceiver,ContentProvider)。

熟练使用集合、IO流及多线程断点上传下载,和线程池的使用。

熟悉掌握RecyclerView,ListView等重要控件的使用和优化及(AsyncTask)异步任务加载网络数据。

熟练掌握Android中的多点触控(手势识别器)、熟悉Android下View的事件分发机制与并能处理滑动事件冲突处理。

熟练处理Activity和Fragment和ViewPage的配合使用,并能熟练处理Activity和Fragment,Fragment和Fragment之间的通信。

熟悉掌握Android系统下的广播(耳机的插拔,网络状态变化等)的相关功能开发。

熟悉Android下数据的加解密base64,DES,MD5加密和9patch图制作来完成UI,熟悉Android图像处理之Bitmap类。

界面UI:

熟练使用Android下常用的布局设计,新版本Material Design布局和设计,熟练自定义控件和一些主流的第三方控件的使用等。

熟悉Android中的动画,选择器,样式和主题的使用,能够实现市面上大多数动画效果。

熟练并能独立解决市面上各种Android机型屏幕的适配(图片适配,Dimens适配和AutoLayout适配等等)。

网络与通信:

熟悉Android下的Handler消息机制(Handler,Message,MessageQueen,Looper,HandlerThread),并能熟练使用Handler和熟悉使用EventBus 3.0和RXandroid机制。

熟悉XML/JSON数据解析和生成JSON/XML,以及Android下SQLiter数据库存储方式(greendao,ormlite)。

熟练使用ContentProvider来获取和更改手机系统中通讯录、短信的数据。

熟悉Android下混合开发,原生App和HTML5的使用,和js交互,数据通信。

熟练使用Android开发中重要模块的开发如:网络请求(AsyncHttpClient,Volley,OkHtttp,NoHttp,Xutils3.0里的网络请求API等)。

熟悉基于Xmpp通信协议的IM(即时通信)开发,和第三方IM的开发SDK(融云SDK等)。

熟悉界面间的数据传递(intent和EventBus3.0等等),进程间通信(AIDL,文件共享等等)。

熟悉Android下网络通信技术,对Socket通信、TCP/IP、Http有一定的了解和熟练使用。

框架模式:

熟悉掌握MVC模式,单例、工厂,观察者,模板等设计模式。

熟练使用市面上主流技术的Android开发常用框架(greedao,ormlite,EventBus3.0,PullToRefresh,Xutils3.0等等)。

第三方及功扩展:

熟悉android 的JNI/NDK开发,通过JNI实现JAVA与C程序间的调用及回调数据通信。

熟悉使用支付宝,微信支付的SDK和银行的卡SDK的接入,为App增加支付模块。

熟练使用Android下的GPS定位和(接入百度地图定位SDK实现定位,标记,搜索等功能)。

熟悉主流常用的第三方SDK(友盟统计,极光送,QQ和微信的三方登陆和分享SDK,基于讯飞语音的文字和语音的相互转化开发)。

熟悉Android环境下的各类手机传感器开发(光传感器,方向传感器等等)。

熟悉Android的二维码开发,生成码和解析码,扫描码的开发。

熟练掌握Android手机中的3G/蓝牙/wifi的网络通信机制。

熟悉安卓技术中的视频播放开发技术(videoview,MediaPlayer ,Vitamo,VLC)。

熟练使用Android开发中图片处理(imageloarder,fresco,picasso,Xutils3.0里的图片加载API等)。

其他:

熟练掌握SVN版本控制工具及Eclipse、尤其是Android Studio和Studio下的DEBUG调试工具的使用。

熟悉android各版本SDK的差异及特性。

熟悉Android5.0和6.0以及7.0新特性(RecyclerView,MD设计,ART模式等)。

熟悉安卓App的线上App的热修复技术(Andfix和Hotfix),熟练使用的Hotfix热修复功能。

熟悉Android代码的混淆机制和多渠道打包,和后期的市场发布上线App的BUG修复维护和优化。

熟悉App(需求,评审,开发,测试,打包,发布市场,后期维护和迭代等一系列流程)和独立开发经验。

总结:

不管是iOS开发还是Android开发,掌握语言基础是前提,后期进阶需要你有强大的自学能力,理解t能力。同时还需要时间的积累。app开发不是你一下就能掌握的东西,里面包含很多,希望你在以后学习运用过程中多多积累、多多总结。相信自己是可以的,祝你成功。

GitHub上都有哪些值得关注学习的iOS开源项目?

有了这10个GitHub仓库,开发者如同buff加持

除了作为互联网上一些最有趣的开源项目的主页,GitHub也是一个分享各种资源的好地方,从免费书籍到公共的api,从技术路线图到项目想法和项目。但是由于数量庞大,很难找到你认为不存在的最有用的仓库。

因此,我列出了10个极好的仓库,它们为所有web和软件开发人员提供了巨大的价值。所有这些都将为你增加价值,帮助你成为一个更好的web或软件开发人员。

1. Free Programming Books

GitHub : 183K+地址:https://github.com/EbookFoundation/free-programming-books

在各种不同的语言中提供的免费编程书籍无疑是GitHub上最受欢迎和最受欢迎的资料库之一。尽管它的名字里有“书”,但它提供的远不止这些。它包含了免费在线课程、互动编程资源、问题集和竞赛性编程、播客和几乎每种编程语言的学习列表。

2. Developer Roadmap

GitHub : 155K+地址:https://github.com/kamranahmedse/developer-roadmap

卡住了吗?或者需要一些建议来开始你的开发之旅?这个仓库将指导你完成整个过程。如果你想成为一个前端、后端或DevOps工程师,它有你需要知道的所有技术。

3. OSSU Computer Science

GitHub :81K+地址:https://github.com/ossu/computer-science

如果你没有计算机科学背景或学位,并希望同等的知识相同的计算机科学学位,那么这个仓库是为你。它适用于那些希望对所有计算学科的基本概念有适当的、全面的基础知识的人。它提供了所有的资源,以帮助你成为一个自学的计算机科学研究生等效,并有一个世界范围的学习者社区。

它是根据本科计算机科学专业的学位要求设计的,减去了通识教育(非计算机科学)的要求,因为它假设大多数学习这门课程的人已经在计算机科学领域之外接受过教育。这些课程本身是世界上最好的课程之一,通常来自哈佛、普林斯顿、麻省理工等,但都是专门为满足基本标准而选择的。

4. Awesome

GitHub : 158K+地址:https://github.com/sindresorhus/awesome

正如它的名字所描述的那样,它有一个非常棒的列表,包括各种有趣的话题,从计算机科学到媒体,从游戏到商业,这个列表还在持续更新。

5. Build your own X

GitHub : 103K+地址:https://github.com/danistefanovic/build-your-own-x

如果你是一个相信**“边做边学”原则的人**,那么这个仓库有可能成为你在GitHub上的每日浏览的地方。它有链接到资源,帮助你建立自己的加密货币,数据库,机器人,BitTorrent客户端等方面的知识。

6. Coding Interview University

Github : 165K+地址:https://github.com/jwasham/coding-interview-university

编程面试大学有一个为期数月的学习计划,目标是成为谷歌、亚马逊、Facebook、苹果或其他软件公司等大型科技公司的软件工程师。它提供了如何学习成为一名可靠性工程师或操作工程师的建议。

7. Public Apis

GitHub : 118K+地址:https://github.com/public-apis/public-apis

公共api有一个internet上所有可用的免费api的集合列表,供您在个人或专业项目中使用。它提供了广泛的应用程序编程接口(api),如商业、动漫、动物、新闻、金融、游戏等。

8. Tech Interview Handbook

GitHub :51K+地址:https://github.com/yangshun/tech-interview-handbook

《技术面试手册》中有所有你需要的技术面试的资料。它有各种各样的资料,关于如何准备编程面试,问你的面试官的好问题,对简历有帮助的建议,等等。

9. System Design Primer

GitHub :127K+地址:https://github.com/donnemartin/system-design-primer

《系统设计入门》对于软件工程师来说是一个很好的知识库,它将帮助你学习如何设计大规模的系统。这将帮助你成为一个更好的工程师。回购为这个广泛的主题提供了有组织的资源集合。

因为系统设计在许多公司通常是一个必需的技术面试过程,这个库还可以帮助你准备那些采访学习指南,建议如何处理面试,面试问题与解决方案。

10. Design Resources for Developers

GitHub :25K+地址:https://github.com/bradtraversy/design-resources-for-developers

这个仓库有一个精心策划的设计和UI资源列表,包括图片、web模板、CSS框架、UI库、工具等等,可以免费在你的项目和应用程序中使用。

本文分享自华为云社区《所有开发者都应该知道的10个GitHub仓库》,作者: Ocean2022 。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,108人围观)

还没有评论,来说两句吧...