Swift入门

Swift语言与OC的对比?

积极的一面来说,Swift让我们的代码更清晰,比如Swift的block代码,我们可以更清楚当前发生以及接下来要发生的事情。还可以自定义操作符非常可爱,甚至把一张图片作为变量。我可以看到返回值并且可以从中理解更多。如果说问题的话,Swift的各种工具还十分脆弱,现在还到处都是bug,经常崩溃,偶尔还会生成错误代码。更严重的是,它真的很慢。非常非常慢。不能快速地编译是最大的问题。比如说构建一个UI应用,每次都要花很长时间才能看到效果。

Swift表面上看起来很简单,Swift实际上比Objective-C更难。Objective-C很简单,你只能做这么多事情。但是Swift是一个全新的世界格局,并没有最佳实践。有点像狂野的大西部,你的选择太多了。Swift会给我们更多的选择以好的方式来解决特定的问题。在Objective-C里,大部分方法方式都很清楚,但是Swift允许一些不同的风格。希望这能够让大家学习不同的东西并保持思想的开放。

什么是Swift?

Swift是苹果公司在2014年6月3日在WWDC(全球开发者大会)上新发布的一门支持型开发语言,基于C和Objective-C语言(以下简称OC),但却没有C的一些兼容约束,采用了安全的编程模式和添加现代的功能来使得编程更加简单、灵活和有趣,界面则基于Cocoa和Cocoa Touch框架,展示了软件开发的新方向。

苹果公司推出Swift的时代背景?

在Swift推出之前,苹果公司一直使用OC作为其御用开发语言。OC源自于史蒂夫・乔布斯创建的NeXT公司,已经使用近20年,它本质上是C语言的面向对象扩展,被限制使用C的方法去跟踪复杂对象。它有很多显著优点,但也有很多明显的缺点,比如:语法复杂,异于大多主流语言,不便掌握;缺少一些语言的保护机制;没有命名空间机制;无为的内存管理机制等。苹果公司意识到问题的存在,所以一直努力改进,比如说:编译器由GCC换成了LLVM,并先后加入literal、block、ARC、Module等特性。但因OC自身特性限制,问题无法彻底根除。要想彻底解决问题,最简单的办法就是重新开发一种语言。假如采用一种简单、易用又安全的新编程语言开发基于苹果平台的应用程序,将会吸引更多的开发者加入,让苹果软件生态圈更加繁荣起来。诸多原因,最终促使了Swift的出现。

Swift语言的优点?

1 博采众长,简化代码,便于初学者开发。Swift既有类似Python的易用性,又摒弃了OC的复杂语法,同时可以兼容OC。其语法内容混合了如OC、JS、Python等优点,但又更接近自然语言。Swift语法简单、易用易学,大大降低了开发者入门的门槛,相对于高难度OC,某种程度而言,Swift更便于开发应用。

2 功能强大,运行效率提高。Swift是一个更快速有效开发苹果平台应用的工具,其原因在于它综合了编译型语言和解释型语言的优缺点,使得其编译速度加快,缩短了从源代码到可执行应用的转变时间;同时执行速度也得到提升,从而保证了所开发的应用程序在手机或平板电脑上高速运行。

3 交互式编程,方便开发者开发和调试。Swift提供的Playground实时预览代码效果真正实现了“所见即所得”。程序员可在编程的同时,预览运行效果,这样既方便初学者学习,又方便熟练者检查bug,提高调试效率。

编程语言发展历史?

最开始的电脑编程都是人工输入 “0” 和 “1” 的机器语言,完全以电脑为中心。后来大家觉得每天输 “0”“1” 效率实在太低了,便有人发明了汇编语言,用一些符合和字母来代替特定的 “0” 和 “1” 的组合。再后来,汇编语言也显得写起来太慢,如果想用汇编语言写一个较大的程序需要海量的代码。于是有人发明了 C 语言这门 “高级语言”,让开发者本身能够更高效快速的编写代码,同时不太牺牲计算机读取代码的效率。然后 C 语言迅速成为了代码界的主流语言。尽管 C 语言比起最初的机器语言已经好懂很多,而且需要写的代码量更少了,但依然有人想,编程语言能不能更简单,更像人话?这就出现了脚本语言,比如大家熟知的 Python,Perl,以及我们的网站所用的 PHP。然而脚本语言并没有像 C 语言一样基本替代了汇编语言,这是为什么呢?最简单的原因便是,脚本语言运行效率较低。电脑并不理解脚本语言,因此,用脚本语言写的程序会被转化为机器语言,从而让计算机执行。然而问题是,这就好像我说中文,你说英语,我们之间隔了一个翻译,翻译给机器后总是会产生词不达意的情况,因此许多本来很简单的运行会被拖的冗长,从而降低了运行效率。而 C 语言等面向机器的语言则更像是一个懂英语的人用中文说话给翻译,他了解英语思考者的思路和逻辑,并且明确的用中文中类似的表达说出来,所以 C 语言的运行效率更高。看好Swift的原因便是它既解决了脚本语言运行效率的问题,又继承了其简洁的语法和强大的功能。Swift 语言的发明者 Chris Lattner 之前最大的成就便是开发了编译系统 LLVM,能将高级语言转换为机器语言,也就是前文所说的 “翻译”。Lattner 也因为 LLVM 其极大的提高了包括 Objective C 在内的诸多高级语言的执行效率而获得了美国计算机协会颁发的 “软件系统奖”。这次 Lattner 开发 Swift 相当于从高级语言到编译器做了个全套,并且他表示 Swift 在许多方面的运行效率都优于 Objective C,而且远超的 Python。也就是说,如果 Swift 的运行效率真的像 Lattner 描述的那样,那么 Swift 代表的程序猿先进生产力的发展要求(提高编程效率),代表了计算机先进文化的发展方向(语法简洁,现代),代表了广大人民的根本利益(写起来爽,学起来快)。当然,前提是 Swift 真的像 Lattner 所说的那样强大。现在 Java 都更新到 8.0,但现在大部分人用的都还是 Java 1.6,为什么大家不用有更多新特性的 Java 8.0 呢?说白了就是大家觉得 1.6 已经能做许多事情,懒得去看新功能了。而 Java 本身也一样,一度我都觉得它要死了,结果 Andorid 又把它救活了。但现在 Java 修修补补到 8.0 依然还是有许多问题是没法解决的,因为本身就是架构上的过时,那为何大家还在用它?因为那些大公司都用习惯 Java 了,没有勇气去换一个更现代更高效的语言,而 Swift 则是逼着公司和开发者去适应新的语言和功能。Swift 的情形和 Go(Google 发布的编程语言)不一样。大家都知道 Go 很好,但 Google 从来没说要大家用 Go 来写 Andorid 的应用。这就不像苹果,推出 Swift 后,对 Objective C 的支持肯定会逐渐减弱,最后完全转到 Swift,这就逼大家必须抛弃二十多年前发明的 Objective C 而必须用 Swift。退一步,如果用 Swift 的效率比 Objective C 高,你如果不用 Swift 在应用市场上的反应就会比别人慢,那还是逼你用 Swift。特别是这样一来,Google 最后还是只能要求大家用 Go 而不是 Java 来写 Andorid 的应用,这样对整个 IT 圈都是一件进步的事。

简单值?

1、不用申明变量类型,如果赋值,编译器自动推断变量类型,不赋值则直接在变量名后面拼接类型let 常量 var 变量

2、创建数组并访问

vararray = [“”,””,””,””]

array[1] = “”

3、创建字典并访问

var dict = [“”:””,””:””,]

dict[“”] = “"

控制流?

1、遍历数组

for元素in array{

}

2、遍历字典

for (key,array) in dict{

for元素in array{

}

}

3、循环

while变量< 100{

}

4、有限次循环

for var i = 0;i < 4;++i{

}

函数和闭包?

1、func声明函数,名字和参数识别函数,——>指定返回值类型

func函数名(形参1:String,行参2:String) -->String{

return "获得内容1: (形参1),获得内容2:(形参2)"

}

2、函数调用

函数名("实参1","实参2")

3、函数嵌套和闭包

对象和类?

1、使用class和类名创建一个类

2、类里面声明属性,var变量=初始值;

3、类里面声明方法,依然func+函数名

4、创建一个类的实例对象

var对象=类名()

5、访问类的属性,对象.变量=赋值

6、访问类的方法,var自定义方法名=对象.方法

7、类里面init方法的实现,init(name:String){ self.name = name}

8、类的继承,子类重写父类方法,必须func前面添加override

9、类的属性的setter和getter

枚举?

1、创建枚举

2、使用枚举

结构体?

1、创建结构体

2、结构体传值

3、结构体里面的方法用mutating关键字,表示可修改

协议?

1、protocol声明协议

protocol ExampleProtocol{

var simpleDescription: String { get }

mutating func adjust()

}

2、满足协议的类

class SimpleClass: ExampleProtocol {

}

扩展?

1、为现有官方类型添加方法和属性,同样,方法前用mutating修饰

2、类别满足协议

extension Int: ExampleProtocol {

}

泛型?

1、创建泛型函数、方法、类、枚举和结构体,名称后面加一个尖括号<>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,066评论 4 62
  • 黎明前有着夜里最深的黑暗,却是离光明最近的时刻。 这里记录了高考前一百天,几位花朵年龄的少年因高考相熟相知相忘于江...
    郭劼阅读 475评论 0 0
  • 没有人,天生就懂爱系列 之 爱的五种语言 05 身体接触 很多女性以为这是男人最喜欢的爱语,其实不然,在生活中大量...
    egaoTina阅读 155评论 0 0
  • 叶落花谢自萧条, 还待来日显春娇。 我自把学心头挂, 不再忧愁得以悠。
    雅俗共赏Y阅读 170评论 1 1
  • 公司的项目里有拉取H.264视频流进行解码播放的功能,本来是采用FFMpeg多媒体库,用CPU做视频的编码和解码,...
    江小凡阅读 13,148评论 11 36