1、欢迎使用Swift来编写iOS项目

来源:互联网 发布:淘宝职业退货师被抓 编辑:程序博客网 时间:2024/05/16 08:56

前言      

       我第一次接触编程是在懵懂的高中年代,如果没记错的话应该是在2008年。我学习的第一门编程语言是PASCAl,可能或许很多人都不知道,不要问我为什么学这门语言?因为我也不知道为什么,呵呵,反正老师教了,我就学了。之后近了大学就开始学习C语言,因为之前学过编程,所以C语言不用老师教,一看就懂,好歹我当年还代表我们学校去参加过全国的编程大赛。在大二的时候,大概是2012年10月份的样子就去参加公司的内训,学习IOS开发,那个时候是第一次接触object-c语言。公司的技术总监也就是我当时的老师,跟我说不要问为什么要学这么语言,学这门语言能让你挣钱,人不要跟钱过不去,呵呵,我们的技术总监很幽默滴,你知道他写代码之前是干嘛的么?是讲相声的。之后,就一直用OC做IOS的开发。到了2014年7月份的样子,苹果公司就推出来一门新的语言——Swift语言,那个时候在我们开发界可火了,还真有人就两天两夜不睡觉,学习Swift语言,或许这也算是赶时髦吧。我那时候手头上接了好几个项目,也没时间去学习这门很屌的语言。到现在都过了大半年的时候了,现在空闲的时间比较多了,是时候开始学习这么新语言了,虽然公司现在还是用OC在写项目,但是我觉得我要走在最前面。

(补充说明:这本书总共有四百多页,最开始我没注意,看第一章的时候感觉很多东西写的不是很详细,后面我浏览了整本书的内容,才发现第一章其实是整本书的一个缩影,是对后面内容的一个简单的概念介绍,并不是详细的教程,所以我决定将本篇重新再写过,因为之前的定位不清楚。另外,我感觉这本书里面有些东西写的还不是很好理解,我会根据我自己的编程经验和理解自己补充一些东西。)


1.1 关于Swift

        Swift是一种适用于IOS和OS X应用的全新编程语言,它建立在C和Object-C语言之上,没有C语言的兼容性限制。Swift采用安全的编程模式,增加了现代功能使编程更容易、更加灵活和有趣。Swift以成熟的Cocoa和Cocoa Touch框架为支撑,这是一个重新构想软件开发的机会。Swift经过了苹果工程师数年的酝酿,通过改进现有的编译器、调试器和框架结构奠定了Swift的基础,并通过了Automatic Reference Counting (ARC)简化了内存管理。学习Object-C的时候,就是这个内存管理特麻烦,现在Swift简化了内存管理,采用了自动释放内存,这个给我们开发人员带来了极大的方便。虽然Swift简化了,但是写OC写了两年多的时间了,一下子来写Swift还真是感觉有点别扭。不过没关系,从基础开始慢慢的来,时间长了就适应了。


1.2 Swift初见

       学习编程的人都是从一个很经典的程序开始的,那我们就一起来看看,我们如何用Swift来写这个经典的程序。


Swift版本的Hello Word : 

<span style="font-size:18px;">println("Hello world !")</span>


Object-C版本的Hello Word:

<span style="font-size:18px;"> NSLog(@"Hello Word !");</span>

      很明显输出的语法不一样了,Swift的输出感觉又回到来C语言的年代了,而且语句之后不用再写分号了。记得我当年刚开始学写代码的时候,老忘记写分号,可惜那个时候Swift还在娘肚子里,倒是现在我已经养成了良好的编码习惯,一下子要我不写分号,我还真不习惯了,其实我想说,语法改来改去有意思么,这不是折腾我们开发人员么。。。。


简单值

1、常量与变量概念的解释

    在Swift语言中,我们用 let 来声明常量,使用 var 来声明变量。一个常量的值在编译时并不需要获取,但是只能赋值一次。

      比如,你定义一个常量   let   a = 1;   那你就不能再让 a = 2; 或者 a = 3; 通俗的讲就是如果你定义的事常量类型,那么这个常量一旦被赋值就永远就是这个值了,再也不能改变了。有点类似于古代的婚姻终身制,一但结婚了,你就不能离婚了。如果你觉得这种方式不太灵活,那么你还有一种选择,那就是变量,变量是可以离婚的。

      比如,你定义一个变量  var   a = 1;   如果你觉得 a = 1 太小了,你可以改成 a = 100 , 或者 a = 1000;

      好,那么我们来稍稍总结一下,定义一个值我们有两种方法,当你要定义一个不需要改变的值的时候,你可以将它定义成常量;当你定义一个值需要改变的时候,那么就请你将它定义成变量。


2、值的类型

(1)声明值所属的数据类型

         常量或者变量的类型必须和你赋给他们的值一样,声明时类型是可选的。如果声明的时候,你给它赋了初始值,编译器会自动推断类型。比如:

         let    a = 1;

         因为你给a赋的初始值是一个整数,虽然你没有声明a的数据类型,但是编译器会根据你给它赋的初始值判断a是属于整型的。当然你声明的时候也可以声明   a的数据类型,你可以这样写:

         let    a : Integer  = 1;

        用冒号表示 a 所属的类型。


(2)数据类型的转换

         请思考一个问题?不同的数据类型可以互相进行转换么?

         肯定是可以的,但是要分情况,分为同类型转换和不同类型的转换。同类型的转换肯定是可以的,比如将 int 类型的转换成 double 类型的,这种是同类型的数据转换。如果你说要把 a = @"123" 转成 a = 123 ,这就是不同类型的转换,这种转换是允许的,但是不是所有的不同类型的数据都可以进行互相转换的,比如 a = @"hello" , 它就不能转成整型的数据了。

         同类型的数据转换分为隐式转换和显示转换。隐式转换和显式转换要求是同类型的,就是说两种数据类型必须兼容,隐式转换是向上转型(相当是子类转父类)。

        隐式转换和显式转换的区别

       string strType = "123";
       object objType= (object)strType;//可以不要,隐式转换, 要的为显式转换
       string strType2 = (string)objType; //必须要,显式转换

       不同类型的数据转换又称作强制转换,而强制类型转换则是向下转型(相当是父类转子类),就好像Double型的可以包含int型一样。

 

(3)Swift中的数据类型转换

    let label ="The width is"

    let width = 94

    let widthLabel = label + String(width)


有一种更简单的把值转换成字符串的方法:把值写到括号中,并且在括号之前写一个反斜杠。

例如:

    let apples = 32

    let oranges = 5

    let app leSum mary = "I have \(ap ples) appl es."

    let fru itSum mary = "I have \(ap ples + ora nges) piec es of fruit."




(4)字典和数组         

         数组是一种很常用同时也是很重要的数据类型,基本上所有的编程语言里都会有数组,但是就目前我涉及的编程语言中,唯独只有OC中才有字典。那什么是字典?什么是数组呢?我不想把官方的解释照着念一遍,在我的理解中数组和字典都是一种容器,就有点类似于一个桶子,桶子里面可以装水、装油、装米,当然你要是土豪也可以拿桶子来装大把的钞票。桶子里面可以装各种类型的物品,同样字典和数组也有这个功能,只不过数组和字典里面装的是各种类型的数据。其实,字典和数组的功能基本上是类似的,当你有一堆的数据需要存放的时候,你会感觉我放到数组里面也行,放到字典里面也行。人一旦有了选择就会开始纠结了,那我到底是放到字典里面呢?还是放到数组里面呢?好吧,那我就来说说字典和数组的区别吧,这样你就会知道什么时候放到字典里面什么时候放到数组里面了。数组和字典都是存放数据的容器,如果你有一堆的球,你只需要把他们放到一个地方而不需求区分他们,你就可以放到数组里面;如果你需要区分他们,也就是说你需要给每个球贴个标签用来区分它门,那么就请你把这堆球放到字典里面去,这就是数组和字典的区别。另外,需要特别说明的是,字典中的数据都是以键值对存放的,“值”就类似于“球”,“键”就类似于球的“编号”,告诉你哪个编号你就知道该去拿哪个球了,同样的告诉你一个键你就知道是哪个值了。至于数组和字典的具体用法,等到后面的章节在具体介绍吧,这里只需理解数组和字典的概念和两者之前的区别就行了。


控制流

      控制流其实就是if语句、循环语句以及switch语句,这些都是在程序开发中比较常用的语句。if 语句主要是用于逻辑判断的,其主要结构主要是 if - else 型;循环语句主要是用在条件判断,当条件满足时,就进入循环体中,其主要的有 for 语句型、 for - in 语句型、while 和  do - while 语句型,其实在开发中用的最多的还是 for 语句的循环。switch语句其实也是用来做条件判断的,它的功能和 if 有点类型,但是它的判断条件只能是一个具体的值或者是条件,而不能是是一个表达式。





0 0
原创粉丝点击