[IOS swift对比oc]
- [IOS swift对比oc] 推荐度:
- 相关推荐
[IOS swift对比oc]
.html
WWDC 2014上苹果再次惊世骇俗的推出了新的编程语言Swift 雨燕, 这个消息会前没有半点风声的走漏。消息发布当时,会场一片惊呼,相信全球看直播的码农们当时也感觉脑袋被敲了一记闷棍吧。于是熬夜学习了Swift大法,越看越想高呼 ” Swift大法好!“ 程序员,最讲究的就是实事求是和客观,下面就开始对比两种语言。 首先要强调的是,Swift绝对不是解释性语言,更不是脚本语言,它和Objective-C,C++一样,编译器最终会把它翻译成C语言,也就是说编译器最终面对的其实都是C语言代码( 这是千真万确,不容置疑的!!!所以不要看它长的想脚本语言,其实它是比Java, C#要高效的多的C语言!!!),但是Swift的强大之处在于它站在所有语言的肩膀上,吸取所有语言的精华。 这个系列我们先谈谈几个最基本的语法变化: 1. Swift终于放弃了Objective-C那幺蛾子般的 [ obj method:x1 with:x2] 的语法,终于跟随了大流,变成了obj.method( )的顺眼模式。虽然对于Objective-C的程序员来说,这些[ ]看上去特显酷 , 你们知道就是这个中括弧吓跑了多少c++, java , c#的程序员嘛?所以说这个小小的变化,可以让苹果的开发更平易近人,对有其他开发语言基础的人来说更友好。 但苹果不会这么自甘平庸,我们知道Objective-C里方法的调用有种语法是其他主流语言没有的,那就是标签。我们在使用java, C++, C, C#等语言时,如果使用 rect.set( 10, 20, 100, 500 ), 虽然在写set方法的时候,IDE有提示四个形参的含义,但写完后,这句代码中10, 20, 100, 500是社么意思? 所以代码的可读性就变的很差, 而Objective-C很完美的解决了这个问题 :- [ rect setX:10 y:20 width:100 height:500 ]
- rect.set( 10, y:20, width:100, height:500 )
- fun( 11, 22 , 33 ) //正确
- fun( n1:11, n2: 22, n3: 33 ) //错误
- rect.set( 100, y:100, width:300, height: 200 ) //正确
- rect.set( x:100, y:100, width:300, height: 200 ) //错误
- class Weapon
- {
- var name:NSString
- var power:int
- init( name:NSString, power:int )
- {
- self.name = name
- self.power = power
- }
- func shoot( )
- }
- Weapon weapon = Weapon( name:“人间大炮”, power: 100000000000 )
- @interface Weapon
- -(void)shoot;
- @end
- @interface Gun : Weapon
- -(void)Shoot;
- @end
- Weapon* currentWeapon = [ Gun new ];
- override func shoot{
- }
- var n = 22
- int n = 22;
- var n = 22; var hero:Hero
- let PI = 3.1415926
- func test( p1: int, p2: int )
- {
- }
- func add( p1: int, p2 : int )->int
- {
- return p1+p2
- }
- class Person
- {
- var name:String
- var age = 0
- init( name:String , age:int )
- {
- self.name = name;
- self.age = age;
- }
- func description( )->String
- {
- return “Name:\( self.name ) ; Age: \( age )”;
- }
- }
- int FindScoreByName( DataSource* source, string* name );
- var n : UInt ? = 5 或则 var n ? = 5
- var n : UInt ?
- func FindScoreByName( source:DataSource, name:String )->UInt? //返回的是可选变量
- {
- var score : UInt ?; //此时 score 的变量没有分配内存,也就是说score为nil
- if( source.HasStudent( name: name ) )
- score = source[ name ]. score; //这里score才分配内存;
- return score; //如果没有找到学生信息, score的内存一直没被分配
- }
转载于:.html
最新文章
- CNN中卷积和池化计算公式
- matlab stats里的f值,MATLAB 回归分析regress,nlinfit,stepwise函数
- 在信雅达的一年
- Component Object Model (COM)
- Linux下Mysql启动、关闭、重启指令
- Put GridView inside ScrollView
- Android 真正的3D Gallery
- 第五章
- vss服务器的简单使用
- TreeSet集合如何保证元素唯一
- 前途迷茫不知.NET与JAVA那个好
- 排列 组合 算法(一)
- Postgresql通过docker进行高可用部署 pgpool
- linux终端基本操作命令
- curl命令详解 (curl
- LOCALDB
- Qt数据库:(三)利用QSqlQuery类执行SQL语句(一)