在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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:
常用的函数式编程方法map,reduce, flatMap,filter,sort,相对于理解抽象的函数式编程概念,我觉得开始时先用好这些函数更重要。 struct vs. classstruct是值类,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提供了一些很好的特性:
目前App基本都是使用JSON作为报文协议,Android开发我们一般使用Gson进行解析,在Swift开发中,对比了 ObjectMapper,Argo+Curry,SwiftyJson后,我们决定使用ObjectMapper作为JSON解析框架。 ObjectMapper支持的特性如下:
Realm是iOS开发比较流行的针对移动端设计的数据库,代替sqlite,也有Android版本。 使用例子: let user = Mapper<User>().map(JSONString) Realm是iOS开发比较流行的针对移动端设计的数据库,代替sqlite,也有Android版本。 图片缓存框架,Android开发常用Glide和Fresco,OC开发一般用SDWebImage,Swift开发推荐用HanekeSwift. 开发工具比较Android目前主流的开发工具是Android Studio,2014年以前是Eclipse ADT。 与Android Studio相比,Xcode速度快,但不够稳定,一天崩溃几次很正常。 包管理器&构建工具对比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,目前插件还很比较少。 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:
常用的函数式编程方法map,reduce, flatMap,filter,sort,相对于理解抽象的函数式编程概念,我觉得开始时先用好这些函数更重要。 struct vs. classstruct是值类,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提供了一些很好的特性:
目前App基本都是使用JSON作为报文协议,Android开发我们一般使用Gson进行解析,在Swift开发中,对比了 ObjectMapper,Argo+Curry,SwiftyJson后,我们决定使用ObjectMapper作为JSON解析框架。 ObjectMapper支持的特性如下:
Realm是iOS开发比较流行的针对移动端设计的数据库,代替sqlite,也有Android版本。 使用例子: let user = Mapper<User>().map(JSONString) Realm是iOS开发比较流行的针对移动端设计的数据库,代替sqlite,也有Android版本。 图片缓存框架,Android开发常用Glide和Fresco,OC开发一般用SDWebImage,Swift开发推荐用HanekeSwift. 开发工具比较Android目前主流的开发工具是Android Studio,2014年以前是Eclipse ADT。 与Android Studio相比,Xcode速度快,但不够稳定,一天崩溃几次很正常。 包管理器&构建工具对比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,目前插件还很比较少。 文章出处:http://www.cnblogs.com/salam/p/5525664.html |
请发表评论