ewin更新777ewin棋牌手机官网首页版有意思吗

  Swift是现在Apple主推的语言,2014年新推出的语言,比Scala等&新&语言还要年轻10岁。2015年秋已经开源。目前在linux上可用,最近已经支持Android NDK;在树莓派上有SwiftyGPIO库,可以通过GPIO控制一些硬件。 Object C is old and ugly,oc是1983年苹果推出的,过于陈旧和臃肿。
  Swift语法类似Scala,Javascript ES6, Java,OC, C++, Python
这是tiobe发布的编程语言排行
Swift支持多范式编程:面向协议,面向对象和函数式编程。最后,我们还可以通过Swift学习函数式编程思想,这块Java8才支持。
  Java vs. Swift语法比较
  基础语法
Swift的switch 语法和Java及C++很像,但是它没有break,他命中一个case后会自动退出switch。对于几个不同case同样处理的情况,可以case后面连续几个condition,用逗号隔开。
for循环和Java也基本一样,不过也是不需要括号。for循环中,..&的用法比较方便。下划线符号_(替代循环中的变量)能够忽略具体的值,并且不提供循环遍历时对值的访问。for-in则有点类似与Java中for each循环。
Swift 2.2中try catch和do while和java差异很大。
  函数和闭包
wift函数的定义和Java很不一样,Swift函数的定义形如 func foo(arg: Type) -& Return Type:&
Swift中函数是一等公民,可以作为返回值和参数;Swift支持闭包,Java8才支持lambda闭包。
Swift支持元组,Swift函数可以通过返回元组支持多个返回值。
Swift函数可以嵌套,即一个函数内部还可以定义函数,Java不支持。
Swift函数可以接收不定参数,跟Java基本类似。
Swift函数参数可以带默认值,和Python类似,Java函数不可以带有默认值。
常用的函数式编程方法map,reduce, flatMap,filter,sort,相对于理解抽象的函数式编程概念,我觉得开始时先用好这些函数更重要。
  struct vs. class
struct是值类,class是引用类型,Java语言没有struct,但c/c++/c#语言都有,但不能带方法。
Swift开发推荐使用struct,而不是class。Swift语言实现包括几百个struct,只有几个class。
Swift类构造方法是init(),析构方法是deinit(),类方法调用跟Java基本一样。
self相当于Java中的this,传入生命周期不一致的闭包时需要声明为weak。
  Enum枚举
Android开发谷歌官方不建议使用Enum,影响性能。
Swift的Enum和Java类似,本质是一个类,里面可以包含函数。&
Swift Enum语法更简单。
Swift Enum支持扩展extension。
  Interface vs. Protocol
Extension扩展就是向一个已有的类、结构体或枚举类型添加新功能(functionality)。这包括在没有权限获取原始源代码的情况下扩展类型的能力(即逆向建模)。扩展和 Objective-C 中的分类(categories)类似。
Swift 中的扩展可以:
添加计算型属性和计算静态属性
定义实例方法和类型方法
提供新的构造器
定义和使用新的嵌套类型
使一个已有类型符合某个接口
Swift 中的扩展很强大,struct class enum都可以,也可以扩展系统的类。需要注意的是扩展方法的作用域问题,这里不展开讨论。
  MultiThread多线程
iOS的多线程相对Java来说比较简单,GCD一天时间基本就能够弄明白。Java的Concurrency包就比较复杂了。
  Android,iOS UI开发比较
iOS开发苹果官方建议使用Storyboard开发UI,好处是比较直观,通过看界面可以更好的理解和维护App。现在Xcode7版本对AutoLayout和SizeClasses的支持越来越好,多分辨率适配变得简单,建议大家放弃使用frame代码写界面的传统做法。
当然,Storyboard也有下面的弊端:
界面主要依靠IB生成,Xib代码难以维护,Xcode打开Storyboard或Xib就会对文件产生修改,即使我们没有做实际的修改,git也会显示文件修改了。
多人协助,同时修改导致冲突,合并困难。
Storyboard中包含页面多了后会占用了太多内存,导致Xcode卡顿和崩溃。
错误定位困难,错误提示不清晰,新手难以定位错误。例如不小心删掉了IBOutlet会很难定位。
  Storyboard UI 开发实践
按照业务模块分成多个Storyboard,每人负责的模块避免交叉。
每个storyboard不要超过10个页面,可以通过Refactor& Storyboard功能重新划分。
用Container在一个storyboard复用UI模块,用xib在多个storyboard复用UI模块。
复杂的输入表单,建议用SwiftyForm框架写代码。
&使用Size Classes做多分辨率适配比较轻松。
  Android vs Swift iOS框架比较
Swift框架现在已经很多了,Swift也可以使用OC开源框架,但不推荐使用。我们主要对比介绍项目常用的网络请求框架,JSON解析和图片缓存框架。
在Android开发现在一般使用OKHTTP,Retrofit和Volley等网络框架进行开发,iOS开发oc时代使用AFNetworking库开发,swift开发推荐使用Alamofire和Moya库。
Moya 对Alamofire网络请求库进行了封装,开发不需要写网络模型,管理等。使代码更加简洁。Moya可以代替自己编写的网络抽象层APIManager。Moya提供了一些很好的特性:
编译期检查API接口调用的正确性
通过enum枚举类型清晰的定义不同API的接口
把接口测试stub作为一等公民,让单元测试变得很简单。
支持ReactiveX扩展,方便和RxSwift集成。
Moya比Android Retrofit 多了模拟数据调试的功能。
目前App基本都是使用JSON作为报文协议,Android开发我们一般使用Gson进行解析,在Swift开发中,对比了ObjectMapper,Argo+Curry,SwiftyJson后,我们决定使用ObjectMapper作为JSON解析框架。ObjectMapper支持的特性如下:
支持把对象转换成JSON,把JSON转换成类对象
支持嵌套的对象(单一对象,对象列表集合和字典)
支持自定义的转换函数
支持结构体struct
支持Realm和Alamofire集成,AlamofireObjectMapper
Realm是iOS开发比较流行的针对移动端设计的数据库,代替sqlite,也有Android版本。
使用例子:
let user = Mapper&User&().map(JSONString)let JSONString = Mapper().toJSONString(user, prettyPrint: true)
Realm是iOS开发比较流行的针对移动端设计的数据库,代替sqlite,也有Android版本。
图片缓存框架,Android开发常用Glide和Fresco,OC开发一般用SDWebImage,Swift开发推荐用HanekeSwift.
  开发工具比较
Android目前主流的开发工具是Android Studio,2014年以前是Eclipse ADT。iOS开发一直使用Xcode。对于Java/Android开发人员来说,Xcode上手较难,特别是Interface Builder,Xib和视图代码直接通过连线来生成事件方法,比较挑战开发习惯,并且出现问题定位困难。而Android开发者习惯手写xml界面代码。
与Android Studio相比,Xcode速度快,但不够稳定,一天崩溃几次很正常。模拟器方面,Android的Emulator是虚拟机,启动和安装速度比较慢,iOS是Simulator,速度快,但有些功能不能模拟。都推荐使用真机进行开发。&
  包管理器&构建工具对比
Android开发早期用Ant做一些任务处理,后面有些团队借鉴Java EE项目的做法用Maven,Android Studio出现后谷歌推荐用Gradle。Android的构建工具比iOS功能要强大很多。
iOS开发早期用CocoaPods,现在推荐用Carthage,未来Apple官方推出Swift 3.0后会推广官方的Swift Package Manager。
Carthage好处是比较简洁,坏处是有些框架还不支持,特别是国内BAT的一些开源库。
最后介绍下Xcode包管理器Alcatraz,主要提供Xcode插件,模板和色彩模式,相比Android Studio,目前插件还很比较少。
阅读(...) 评论()[Github实例]使用React, React Native和Redux实现跨平台共用Web, iOS, Android的核心代码 - 推酷
[Github实例]使用React, React Native和Redux实现跨平台共用Web, iOS, Android的核心代码
24 November 2015
相信使用同一个平台和技术开发Web, iOS, Android是很多程序员的追求,也是很多创业公司和产品经理的梦想。而如果核心的业务逻辑代码能够跨平台共用,那更是梦寐以求的事情了。试想,创业公司不用再忍受Android/iOS应聘者的拒绝,只要招几个互为备份的Javascript开发就可以搞定跨平台开发;同一个业务Bug不再担心iOS改好了而Android还没fix,只要改一行JS代码就可以修正各平台;iOS App可以实现即时部署,再也不用在线上bug火烧眉毛的时候还得等待苹果漫长的审核期;如此种种,程序员和产品经理终于可以和谐相处了 :D
好吧,上面的这些场景还没有完全实现,不过Facebook在2015年推出的React Native让它们看起来更有希望实现了。曾经,开发者们尝试通过各种方式来进行跨平台开发,例如
等等。但前者在移动端的性能无法匹敌原生程序,用户体验有明显差别,后者会导致开发和维护的技术成本增加。而React的出现至少让跨平台开发多了一种选择,而且是看上去更美好的选择。
本文以两个程序例子(
)来实现一个简单的Twitter客户端,简单到只在用户授权登录后在首页显示&Hello {username}&。 但这个简单的例子基本涵盖了前后端程序交互的各方面,其中,NodeTwitter是服务端程序,负责与Twitter的OAuth和REST API进行通讯;ReactTwitter是前端程序,使用React展示Web界面,React Native展示iOS和Android App界面,而跨平台的界面通过Redux共享代码与服务端NodeTwitter进行交互。详情可以参照下图:
本文的主旨是尝试利用Javascript技术栈进行跨平台的开发实践,并不包括如何使用React进行UI开发等。关于React和React Native的开发教程,网上已经有了很多很好的文章
,大家可以参考。
在尝试过Webstorm, Atom, VS Code之后,还是觉得Sublime Text最轻便灵活。在Javascript各种框架乱战的时代,似乎任何一个试图做到大而全的IDE都或多或少会有一些缺陷。相反Sublime Text的小巧以及丰富的插件使它能够应对各种要求。未来看好微软出品的VS Code,也许终有一天会出现类似Visual Studio或Xcode的Javascript事实标准IDE。
静态代码检查:
Web端程序:
App端程序:
共享业务逻辑和数据:
: 进行React与Redux的绑定,例如将业务数据和函数绑定到UI
: Redux中间件,用以推迟代码的异步执行,例如在数据访问完成后再执行回调
编译,部署和ES6支持:
实时调试:
的例子可以在Github上找到,包括了Web, iOS和Android平台。
原文发表于blog.xuyuan.me, 转载请注明。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致}

我要回帖

更多关于 有意思书院 手机版 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信