Swift2.0基础进阶
Swift作为iOS开发的新语言,替代Object-C只是时间的问题,赶快学习Swift,为自己的就业机会增添砝码,这个专栏将细致的讲解Swift的基础知识,适合已经有iOS开发经验的人。
欣麒骥
软件工程师
展开
-
Object-C与Swift混合开发
Object-C作为Apple的iOS App开发语言服务了许多个年头,2014年Apple推出了新的编程语言Swift,更高效更安全的口号再次吸引了一大批非iOS开发程序员进入,小编认为Swift取代Object-C只是时间问题,在神州这片土地上,毕竟技术普及有些落后,但再有两年左右时间Swift产品链将形成,第三方支持框架逐步完善,Swift必将成为iOS开发主流。目前来看,激进派的现状Swif原创 2016-03-11 21:43:05 · 2632 阅读 · 1 评论 -
Swift 运算符操作
在Swift中延伸了一种和C++类似的新特性,Swift的运算符提供了良好的可拓展性,我们可以对运算符进行操作,对运算符的操作其实就是对运算函数的重写或者重载。注意运算符操作一般被操做的参数往往要加上In-Out模式。+、-(运算符重载)我们在实际开发中,Swift可自定义运算符,并不限于预设的运算符,我们可以对+进行重载,使其完成Int与Double或者Flaot相加。 Swift提供了如下的原创 2016-03-07 18:27:43 · 2231 阅读 · 5 评论 -
Swift泛型
泛型是为Swift编程灵活性的一种语法,在函数、枚举、结构体、类中都得到充分的应用,它的引入可以起到占位符的作用,当类型暂时不确定的,只有等到调用函数时才能确定具体类型的时候可以引入泛型。泛型函数定义fun 函数名<T,S>(形参列表)->返回值类型{ //函数体...}例子: func copyArray<T>(src:[T],inout dest:[T]) { for e原创 2016-03-06 20:14:56 · 1825 阅读 · 0 评论 -
Any、AnyObject、as
Swift中增加了两种类型别名Any:可表示任意类型,(Int、Double等值类型)。AnyObject:可表示任意class类型实例, 一个任何对象类型的数组Any类型: class Calculate { var NumberA:Any! var NumberB:Any! init(Numbera:Any,Numberb:Any) {原创 2016-03-05 17:09:35 · 1850 阅读 · 0 评论 -
Swift析构器
Swift中的析构器的作用类似C++中的析构器,用deinit关键字,在实例被销毁之前被自动调用的,主要作用是释放一些资源,比如你之前打开了一个数据库,并写入一些数据,在类实例被释放之前需要关闭该数据库。 deinit{ //释放一些资源 }注意:析构器只能在类(class)中使用无需使用func关键字也没有括号( )析构函数不能有返回值和参数不能手动调原创 2016-03-03 17:54:17 · 1267 阅读 · 0 评论 -
构造器(二)----指定构造器、便利构造器
在上一篇博客中简单介绍了构造器基础层面的知识构造器(一),下面我们深入的学习类的构造器应用。在Swift中类一共有两种构造器:指定构造器便利构造器什么是指定构造器,有什么作用?我个人的理解为在类中没有加任何关键字的构造器称为指定构造器,作用为初始化类中所有的实例存储属性init(){ ...}什么是便利构造器,有什么作用?我个人理解为在类中(只能在类中,结构体和枚举里面是没有的)原创 2016-03-01 11:47:23 · 1971 阅读 · 0 评论 -
构造器(一)
构造器的关键字是init,今天我们就谈谈这个init关键字,在创建类或者结构体时,必须为所有的存储属性设置初始值,我们可以在定义的时候直接设置默认值。或者在构造器中设置值。实例存储的初始化大致分为如下几类:定义实例存储属性时显式指定初始值。实例存储属性的类型为可选类型,这样默认分配nil作为初始值提供构造器为实例存储属性分配初始值很明显,今天我们学习的是第三者无参构造器 构造器后面括号里原创 2016-02-29 15:42:38 · 1954 阅读 · 2 评论 -
类型属性、方法
在Object-C中我们已经清楚的知道有实例方法、属性和类方法、属性,类方法只能有类去调用,而实例方法只能有类申请的实例去调用。而在Swift中同样遵守这个约定。 在Swift中有static、class两个修饰符,这两个修饰符的作用是一样的,但它们的使用场景是不一样的。static:在枚举、结构体中修饰属性、方法,定义类型属性、类型方法。class:在类中修饰属性、方法,定义类型属性、类型方原创 2016-02-29 09:39:23 · 1027 阅读 · 0 评论 -
可选链
学习可选链的前提我们要对可选类型进行复习,可以参考我之前写的这篇博客Object-C—>Swift之(二)可选类型个人理解可选链建立在可选类型的基础上,可选类型操作的是某个变量,而可选链操作的是某几个类围绕今天是猴年正月二十一为题材,学习一下这个可选链 class Animalsign { var animal="" var month:Month!原创 2016-02-28 20:44:52 · 1864 阅读 · 3 评论 -
下标
说起下标的作用对于数组和字典来说并不用陌生,但在Swift中所有的类型都支持下标。用下标可以很方便的访问对象的具体值。语法格式使用subscript关键字定义下标subscript(形参列表)->下标返回值类型{ get{ //getter部分执行体,该部分必须有返回值}[set(形参名){//setter部分执行体,该部分一定不能有返回值}]}set部分:set部分可定义原创 2016-02-06 21:21:25 · 2748 阅读 · 1 评论 -
Object-C--->Swift之(十一)属性观察者
属性观察者机制能让程序在属性被赋值时获得执行代码的机会,用来监视属性的除初始化之外的属性值变化,当属性值发生改变时可以对此作出响应具体包括两个特殊的回调方法:willSet(newValue):被观察的属性即将被赋值之前自动调用方法。didSet(old Value):被观察的属性被赋值完成之后自动调用该方法。观察的范围 除了延迟存储属性之外的所有存储属性(包括实例存储属性或类型存储属性)。原创 2016-02-05 21:58:59 · 1965 阅读 · 0 评论 -
Object-C--->Swift之(十)存储属性
计算属性相当于Object-C的getter、setter合成的属性,在Swift中结构体、类都可以定义计算属性定义计算属性[修饰符] var 计算属性名:属性类型{ get{ //getter方法执行体,该方法必须有返回值 } [set(形参名) { //setter方法执行体,该方法一定不能有返回值 }]}注意:var计算属性只能定义成变量形式enum Season{ca原创 2016-01-30 12:53:34 · 959 阅读 · 0 评论 -
Object-C--->Swift之(九)延迟存储属性
Swift引入了一种新的机制–延迟存储属性机制,在第一次被调用时才会被计算初始值的属性,声明时需要使用lazy修饰符。 注意:定义属性时一定得是变量(var),常量是无法使用延迟存储机制。什么时候用到延迟存储?当某个实例持有另一个创建成本较大的实例的引用时,使用延迟存储可以降低内存开销,从而提升性能。 class Bird { var name:String var age:Int原创 2016-01-29 10:45:44 · 911 阅读 · 0 评论 -
Object-C--->Swift之(八)类和结构体
在Swift中类和结构体有高度的相似性。二者主要区别是: 1. 结构体不支持继承 2. 结构体不支持定义析构器 3. 结构体是值类型,而类是引用类型定义类语法格式:[修饰符]class 类名{零个到多个构造器零个到多个属性零个到多个方法零个到多个下标}对一个类定义而言,包括3种最常见的成员:构造器、属性、方法,如果程序员没有为一个类提供构造器,则系统会为该类提供一个默认、无参数的原创 2016-01-28 20:19:15 · 979 阅读 · 0 评论 -
Object-C--->Swift之(八)枚举
声明枚举Swift使用enum定义枚举,语法格式为enum 枚举名{//使用case关键字列出所有枚举值//枚举的其他成员}Swift即允许每个枚举值单独用一个case关键字,也允许使用一个case定义多个枚举值,多个枚举值之间以英文逗号隔开。枚举名从程序可读性方面来看,swift枚举名必须是有一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任原创 2016-01-28 14:26:35 · 1063 阅读 · 0 评论 -
Object-C--->Swift之(七)嵌套函数与闭包
嵌套函数函数分为全局函数和局部函数,前面已经介绍了全局函数,下面介绍下局部函数,定义在函数体内部的函数可以成为嵌套函数。 注意:嵌套函数对外是隐蔽的,只能在其封闭函数内有效,嵌套函数只能在其封闭函数内有效,其封闭函数也可以返回嵌套函数,以便于程序在其他作用域内使用嵌套函数。func Math(#type:String)->(Int)->Int{ func square(val:Int)->In原创 2016-01-24 12:15:44 · 1722 阅读 · 0 评论 -
Object-C--->Swift之(七)函数重载
是什么是函数重载?名字相同的函数出现在一起,就构成了函数重载,只要形参列表或者返回值类型不同就行。判断条件形参列表、返回值类型组成、外部形参名三者其中一种不一样均可作为函数重载 举例说明 //该函数类型为()->Void func test() { } //该函数类型为(String)->Void或者(String)->() func t原创 2016-01-23 12:09:59 · 1305 阅读 · 0 评论 -
Object-C--->Swift之(六)函数入门级讲解
定义实例函数语法func 函数名(形参列表)[->返回值类型]{//实现功能的代码}定义类函数class func 函数名(形参列表)[->返回值类型]{//实现功能的代码}注意:声明函数必须用func关键字,声明类函数必须加上class函数名尽可能的表达出这个函数功能意图,多个单词的话,第一个单词的首字母小写其他单词的首字母要大写形参列表是可以根据具体情况省略内容的,多组原创 2016-01-16 19:57:26 · 823 阅读 · 0 评论 -
Object-C--->Swift之(一)元组(tuple)类型
元组(tuple)类型 元组(tuple)使用圆括号把多个值组成一个复合值,里面的每个值可以是任意类型,而且它们之间可以不同类型。格式 变量或常量关键字 元组变量 = ( 变量,变量, …)保存某个信息表上的一行信息,可以创建一个元组var information=(1315925388,"小明","男",21)也可以这样创建 var information1:(Int64,String原创 2016-01-13 20:04:28 · 1250 阅读 · 0 评论 -
Object-C--->Swift之(二)可选类型
可选和nil的恋情 先看一个例子吧! let str="hello world" let num:Int=Int(str)这两行代码的意思str字符串转换成Int类型,嘿嘿!这不是坑计算机吗?hello world能转换成Int类型的数字吗?很显然不能,而且我们运行都不会通过的!可是我们把第二行代码换成 let num:Int?= Int(str)编译就通过了!就这原创 2016-01-13 21:41:52 · 1270 阅读 · 0 评论 -
Object-C--->Swift之(三)nil合并运算符、范围运算符
nil合并运算符在Swift中引入一种新的运算符nil合并运算符:??,它的格式如下: let c = a??b 它的含义如下:判断可选变量a是否为nil,如果a不为nil,c就等于a所包装的真实值,如果a为nil,则程序会返回b的值。注意这里有两个必须条件: 1. a必须是可选类型的。 2. b的类型必须要和a的强制解析后的类型一致。 其实上边的代原创 2016-01-14 12:08:45 · 1201 阅读 · 0 评论 -
Object-C--->Swift之(四)强大的Switch
Swift依然继承了C和Object的Switch语句,但在原有的基础上进行了改变,使其变得更加强大任性的case标签:case标签可以紧跟多个值 var score = "C" switch score { case "A","a": print("优秀") case "B","b": print("良好") case "原创 2016-01-15 12:45:26 · 1080 阅读 · 0 评论