移动IOS开发框架有哪些(移动开发框架主要有)
1451
2022-10-20
ios的开发框架有很多,常用的框架有Foundation、UIKit、CoreData和CoreGraphics等。
Foundation框架可以为所有的应用程序提供基本系统服务;UIKit提供了在屏幕上绘制的机制,捕获事件,和创建通用用户界面元素,所有的iOS应用程序都基于UIKit。
CoreData提供对象的管理,使用CoreData,可以创建模型对象并管理这些对象;高质量的图形对于所有的iOS应用程序很重要,CoreGraphics则提供了更底层的库来帮助创建复杂图形。
总结:
ios的开发框架有很多,常用的框架有Foundation、UIKit、CoreData和CoreGraphics等。
sstoolkit 一套Category类型的库,附带很多自定义控件,功能不错~
BlocksKit 将Block风格带入UIKit和Founcation
cocoa-helpers 一些Cocoa的扩展 2年前的工程
CoconutKit 一系列扩展和一些自定组件
STUtils 一系列扩展包
PSFoundation 一系列扩展 和功能增强
ConciseKit 一系列宏定义 挺有意思
DTFoundation 又一系列扩展
BBBootstrap 一些常见功能的扩展库
jQuery Mobile, Sencha Touch, Titanium, Dojo Mobile
我知道这么多框架,框架使用看人使用习惯
流行的开源移动应用程序开发框架 Ionic 于今日发布了 4.0 正式版,代号 Neutronium。官方称 Ionic 4 为“Ionic for Everyone”。开发者现在可通过 Ionic 使用 Web 技术轻松构建高质量的原生和渐进式 Web 应用程序。
Ionic 4.0.0 Neutronium 源码-:
毫无疑问,Ionic 4 是一个十分重要的版本。它饱含开发团队两年来的研究和努力,将 Ionic 从“mobile for Angular”的定位转变为强大的 UI 设计系统和移动应用程序框架 —— 每个 Web 开发者都可使用它。
简单说来就是因为前端界的变化实在太快了。Ionic 刚问世的时候,正是 AngularJS 流行之时,Ionic 当时的目标也只是打造丰富的由 JavaScript 驱动的组件,以使用 Web 技术构建高质量的移动应用程序。由于业界当时没有统一的标准方法可以实现这一目标,Ionic 便把目光瞄准了 AngularJS,开发者可以在 AngularJS 中构建自定义的指令,而由 Ionic 提供的原生组件可打包成易于使用的自定义 HTML 标记。任何使用该标记的 AngularJS 模板都可以引导组件并运行它,就像在浏览器中实现原生的支持。
即便到了 Angular 2 发布的时候,Angular 饱受争议,但做好移植工作的 Ionic 2 和 3 在彼时依然收获了不错的口碑,Ionic 3 甚至被认为是 Ionic 最成功的版本。
但到了最近两年,前端变化之快不但令人目不暇接,甚至让 Ionic 这样的框架也陷入了瓶颈。AngularJS 已被 Angular 取代,而引领前端发展的“三驾马车”,Ionic 表示其中的“两驾马车”与自身并无交集。
为此,Ionic 进行了反思,并在2017年开始尝试将 Ionic 转变为一组 Web 组件,他们判断这将是未来的趋势 —— 让世界上几乎每个 Web 开发者都可在他们的移动、桌面和渐进式 Web 应用程序中使用 Ionic 的组件 —— 只需在他们的应用程序中使用 Ionic 的自定义 HTML 标记即可。
最重要的是,Ionic 使用的是标准 Web API 而非第三方 API,所以开发者大可放心使用,Ionic 的组件 API 在未来许多年都会保持稳定,而不是成为前端和框架发展进程中的牺牲品。
性能
官方宣称 Ionic 4 是有史以来最快的版本,近 100 个 Ionic 组件均通过性能、定制性和外观方面的评估。每个组件均符合 iOS 和 Android 上的最新标准。
官方提供的性能对比 ↑↑↑
Ionic 4 开箱即用,而优异的性能则让 Ionic 成为了构建高性能 PWA 的最佳 UI 框架。官方表示,为了使 Ionic 达到 Google 规定的性能标准,需要使用新的异步组件加载和交付方法。为实现这一目标,Ionic 团队花了一年的时间使用 Stencil 构建一个 Web 组件管道来生成 Ionic 组件,确保它们封装紧密,可延迟加载。
支持 React 和 Vue
虽然目前对 React 和 Vue 的支持尚处于 alpha 状态,但终归让开发者在框架选择上有了更多样化的选择。
文档改进。官方对开发者文档进行了较大的改进。设计更简单、导航更清晰、内容更突出。
此外,还整合了 API 引用和组件引用方面的内容,减少了之前开发者必须多次跳转才得以获取所需信息的次数。
Ionic 4 现在可用于生产环境,官方提供的 Roadmap 显示未来将改进对特定桌面的 UI 支持、改进键盘方案,提供更丰富的主题和动画。另外就是,提供对 React 和 Vue“一等公民”的支持。
导读:刚刚,阿里巴巴正式对外开源了基于 Apache 2.0 协议的协程开发框架 coobjc,开发者们可以在 Github 上自主-。
coobjc是为iOS平台打造的开源协程开发框架,支持Objective-C和Swift,同时提供了cokit库为Foundation和UIKit中的部分API提供了 协程 化支持,本文将为大家详细介绍coobjc的设计理念及核心优势。
从2008年第一个iOS版本发布至今的11年时间里,iOS的异步编程方式发展缓慢。
基于 Block 的异步编程回调是目前 iOS 使用最广泛的异步编程方式,iOS 系统提供的 GCD 库让异步开发变得很简单方便,但是基于这种编程方式的缺点也有很多,主要有以下几点:
针对多线程以及尤其引发的各种崩溃和性能问题,我们制定了很多编程规范、进行了各种新人培训,尝试降低问题发生的概率,但是问题依然很严峻,多线程引发的问题占比并没有明显的下降,异步编程本来就是很复杂的事情,单靠规范和培训是难以从根本上解决问题的,需要有更加好的编程方式来解决。
上述问题在很多系统和语言开发中都可能会碰到,解决问题的标准方式就是使用协程,C#、Kotlin、Python、Javascript 等热门语言均支持协程极其相关语法,使用这些语言的开发者可以很方便的使用协程及相关功能进行异步编程。
2017 年的 C++ 标准开始支持协程,Swift5 中也包含了协程相关的标准,从现在的发展趋势看基于协程的全新的异步编程方式,是我们解决现有异步编程问题的有效的方式,但是苹果基本已经不会升级 Objective-C 了,因此使用Objective-C的开发者是无法使用官方的协程能力的,而最新 Swift 的发布和推广也还需要时日,为了让广大iOS开发者能快速享受到协程带来的编程方式上的改变,手机淘宝架构团队基于长期对系统底层库和汇编的研究,通过汇编和C语言实现了支持 Objective-C 和 Swift 协程的完美解决方案 —— coobjc。
核心能力
内置系统扩展库
coobjc设计
最底层是协程内核,包含了栈切换的管理、协程调度器的实现、协程间通信channel的实现等。
中间层是基于协程的操作符的包装,目前支持async/await、Generator、Actor等编程模型。
最上层是对系统库的协程化扩展,目前基本上覆盖了Foundation和UIKit的所有IO和耗时方法。
核心实现原理
协程的核心思想是控制调用栈的主动让出和恢复。一般的协程实现都会提供两个重要的操作:
我们基于线程的代码执行时候,是没法做出暂停操作的,我们现在要做的事情就是要代码执行能够暂停,还能够再恢复。 基本上代码执行都是一种基于调用栈的模型,所以如果我们能把当前调用栈上的状态都保存下来,然后再能从缓存中恢复,那我们就能够实现yield和 resume。
实现这样操作有几种方法呢?
上述第三种和第四种只是能过做到跳转,但是没法保存调用栈上的状态,看起来基本上不能算是实现了协程,只能算做做demo,第五种除非官方支持,否则自行改写编译器通用性很差。而第一种方案的 ucontext 在iOS上是废弃了的,不能使用。那么我们使用的是第二种方案,自己用汇编模拟一下 ucontext。
模拟ucontext的核心是通过getContext和setContext实现保存和恢复调用栈。需要熟悉不同CPU架构下的调用约定(Calling Convention). 汇编实现就是要针对不同cpu实现一套,我们目前实现了 armv7、arm64、i386、x86_64,支持iPhone真机和模拟器。
说了这么多,还是看看代码吧,我们从一个简单的网络请求加载图片功能来看看coobjc到底是如何使用的。
下面是最普通的网络请求的写法:
下面是使用coobjc库协程化改造后的代码:
原本需要20行的代码,通过coobjc协程化改造后,减少了一半,整个代码逻辑和可读性都更加好,这就是coobjc强大的能力,能把原本很复杂的异步代码,通过协程化改造,转变成逻辑简洁的顺序调用。
coobjc还有很多其他强大的能力,本文对于coobjc的实际使用就不过多介绍了,感兴趣的朋友可以去官方github仓库自行-查看。
我们在iPhone7 iOS11.4.1的设备上使用协程和传统多线程方式分别模拟高并发读取数据的场景,下面是两种方式得到的压测数据。
从上面的表格我们可以看到使用在并发量很小的场景,由于多线程可以完全使用设备的计算核心,因此coobjc总耗时要比传统多线程略高,但是由于整体耗时都很小,因此差异并不明显,但是随着并发量的增大,coobjc的优势开始逐渐体现出来,当并发量超过1000以后,传统多线程开始出现线程分配异常,而导致很多并发任务并没有执行,因此在上表中显示的是大于20秒,实际是任务已经无法正常执行了,但是coobjc仍然可以正常运行。
我们在手机淘宝这种超级App中尝试了协程化改造,针对部分性能差的页面,我们发现在滑动过程中存在很多主线程IO调用、数据解析,导致帧率下降严重,通过引入coobjc,在不改变原有业务代码的基础上,通过全局hook部分IO、数据解析方法,即可让原来在主线程中同步执行的IO方法异步执行,并且不影响原有的业务逻辑,通过测试验证,这样的改造在低端机(iPhone6及以下的机器)上的帧率有20%左右的提升。
简明
易用
清晰
性能
程序是写来给人读的,只会偶尔让机器执行一下。——Abelson and Sussman
基于协程实现的编程范式能够帮助开发者编写出更加优美、健壮、可读性更强的代码。
协程可以帮助我们在编写并发代码的过程中减少线程和锁的使用,提升应用的性能和稳定性。
现在比较主流的移动开发web框架有 sencha touch、jquery mobile、jqmobi和jqtouch。
但个人觉得目前这些框架都不太适用于生产环境,自己研究下倒是可以。原因是在终端上的性能和交互体验还不是很好,且对框架UI的重构工作量较大。
如果考虑跨平台开发,可以自己写一个简单的框架,对touch、slide、scroll和UI做一些集成,性能上会优于这些框架。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~