- 博客(25)
- 资源 (1)
- 收藏
- 关注
原创 swift 进阶笔记 (四) —— 赋值表达式
赋值表达式var (a,_,(b, c)) = (“test”, 9, (12, 3))结果是:a 为 testb 为 12c 为 3数字9被忽略,swift中的 _ 表示忽略
2014-06-20 23:05:30 765
原创 swift 进阶笔记 (三) —— 元类型
元类型元类型是指所有的类型的类型,包括类,结构体,枚举和协议等。类,结构体,枚举的元类型:类型名.Type,比如:class MyClass {}MyClass的元类型是 MyClass.Type协议的元类型:协议名.Protocol, 比如:protocol MyProtocol {}MyProtocol的元类型是 MyProtocol
2014-06-20 22:55:02 1112
原创 swift 进阶笔记 (一) —— 可选型
swift定义可选型的时候,要用“?”,但是在swift的标准库中,可选型的定义是Optional,”?”只是个简写形式。var myNum: Int?var myNum: Optional两句等价可以看出可选型是个泛型,而Optional又是个枚举,Optional可以是 None,也可以是Some(T):protocol Reflectable {
2014-06-20 22:03:07 1108
原创 swift 进阶笔记 (二) —— 柯里化函数
柯里化函数func myFunc(a:Int)(b:Int) -> Int { return a+b}println(myFunc(1)(b:2))可以写成:func myFunc(a:Int) -> (Int -> Int){ func myInnerFunc(b:Int) -> Int{ return a+b
2014-06-20 21:51:35 902
原创 swift 笔记 (二十一) —— 高级运算符
高级运算符位运算符按位取反: ~按位与运算: &按位或运算: |按位异或运算: ^按位左移运算: 按位右移动算: >>溢出运算符自从swift里面提供了所谓的类型安全之后,我们就不能再用一个 Int.max 进行+1操作了,这样会导致报错。所以swift又提供了一个让我们在知道这会溢出的前提下,继续+1的溢出运算符,这听上去也不错。
2014-06-20 20:33:57 1881
原创 swift 笔记 (二十) —— 泛型
泛型泛型是为了解决在针对不同数据类型,而做了同一种功能的操作导致的每个类型我们都要写一份代码的问题。 有了泛型,我们可以只写一份逻辑代码,而适应于不同的数据类型。func swapInt(inout num1:Int, inout num2: Int) { var tmp = num1 num1 = num2 num2 = tmp}
2014-06-20 19:50:35 1026
原创 swift 笔记 (十九) —— 协议
协议(Protocols)协议仅是用定义某些任务或者是功能必须的方法和属性。类似于java里的interface的作用。但协议并不会实现具体的功能。我猜这个名字源于OO中提到的“契约”,但我并不觉得这名字很好,反而是interface这名字更容被接受,因为我觉得协议这个名字很容易和网络编程的时候的网络协议搞混,网络协议也通常简称为协议。语法:protocol
2014-06-20 13:56:50 922
原创 swift 笔记 (十八) —— 扩展
扩展扩展可以让我们给一个已有的类、结构体、枚举等类型添加新功能,包括属性和方法,甚至是构造器,下标,支持协议等等。。。甚至是我们拿不到源代码的类、结构体、枚举,我们依然可以给它加扩展。。。看到这里的时候,我还有点小激动呢。。。可是淡定下来之后,觉得这TMD就是个大大的飞线,飞线,飞线。。。这让我们的代码难以理解全面(总要担心是不是哪里还有扩展,我没读到的。。谁会不会在哪
2014-06-20 02:17:04 1327
原创 swift 笔记 (十七) —— 类型转换、嵌套类型
类型转换这其实是多态。。。swift提供了 is 和 as 两个操作符,用以检测值的类型或者转换它的类型。class MyBasic { var name:String init (name:String) { self.name = name }}class MyFriend: MyBasic
2014-06-20 01:43:36 701
原创 swift 笔记 (十六) —— 可选链
可选链(Optional Chaining)我们都知道“可选型”是什么,那么可选链又是什么,举个例子解释一下:struct MyName{ var name}struct MyInfo { var myName:MyName? = MyName()}class MyClass { var structInstanc
2014-06-20 00:04:40 1125
原创 swift 笔记 (十五) —— 析构过程、ARC
析构过程析构过程是构造过程的逆向过程,当一个类的实例被释放的时候,在内存中消失前,析构器会被调用。swift依然通过ARC管理内存。ARC相关内容,在后面会说。原型deinit{ //清理工作在这里}由于swift是ARC管理内存,所以析构过程已经不像c++那么重要了。class MyClass { var myN
2014-06-19 23:28:33 874
原创 swift 笔记 (十四) —— 构造过程
构造过程为了生成类、结构体、枚举等的实例,而做的准备过程,叫做构造过程。 为了这个过程,我们通常会定义一个方法来完成,这个方法叫做构造器。当然它的逆过程,叫做析构器,用于在实例被释放前做一些清理工作以及一此自定义化的处理。为存储型属性设置初始值类和结构体在生成实例那一刻,必须为所有的属性赋以特定的初始值。要么在定义存储型属性的时候直接给个初始值,否则就必须在构造器里面指定一
2014-06-13 19:26:41 1233
原创 swift 笔记 (十三) —— 继承
继承一个类可以从其它类继承方法,属性以及一些特征。被继承的类叫父类,那另一种就是子类了。。这个我们都懂的。。 这是一个官方给的例子,它是一个基类(Base Class),因为它没有继承任何一个类,这个类里面有一个init方法,我们暂时忽略,只要知道这是个初始化方法,在我们创建一个类的实例的时候,这个方法会被执行,下一篇笔记会详细分析。class MyCar:
2014-06-13 05:21:50 1073
原创 swift 笔记 (十二) —— 下标
下标swift允许我们为 类,结构体,枚举 定义下标,以更便捷的方式访问一大堆属性。比如Array和Dictionary都是结构体,swift的工程师已经为这两个类型提供好了下标操作的代码,所以,我们才可以通过 myArray[2]这种方式,读取和改写这个struct中保存的数据。而且,一个类型中可以定义多种下标访问方式(重载,关于重载,在后面的笔记中会提到,这里先不用太在意)下标
2014-06-12 01:18:57 1675
原创 swift 笔记 (十一) —— 方法(类,结构体,枚举)
Methods (方法)实例方法(Instance Methods)我觉得看到这里,我们唯能八一八的就是swift的自做主张的行为了,反正它就是会以各种方式帮助我们来完成让代码看起来很奇怪的事情。。。在之前函数那一篇笔记中,我们已经看到过参数的外部名字和内部名字的区分了,当然,在实例方法中,这个事情依然存在,而且,swift又会帮我们做一些潜规则。swift
2014-06-12 00:29:56 1280
原创 swift 笔记 (十) —— 属性 (类,结构体,枚举)
属性属性分为用于存储的属性和用于计算的属性, 用于存储的属性仅提支持类和结构体,而用于计算的属性可以支持类,结构体以及枚举。延迟存储型属性(lazy stored property)在一个属性定义前面加上 @lazy 之后,这个属性就变成了lazy stored property,而且,这个属性必须是var定义的,也就是说,常量是不可以加 @lazy的,延迟属性并不会立
2014-06-11 03:55:16 1087
原创 swift 笔记 (九) —— 类和结构体
类和结构体类和结构体在C++中差异就很小的东西,到了swift依然差异很小,但又不会像C++那样可以用struct取代class关键字(当且仅当我们不care public,protected,private字段的时候)。swift和大多数语言不太一样,我们可以把class和结构体等定义在一个单独的文件里,然后在其它文件里直接用就行了,不需要include也不需要import,对于
2014-06-11 02:11:20 1628
原创 swift 笔记 (八) —— 枚举
枚举在C语言中,枚举的值只能是数字,在swift中,枚举的值被叫做raw value,可以用String, Character, Int, Float等表示。enum MyEnum {}例如:enum Seasons { case Spring case Summer case Autumn case Wi
2014-06-10 23:43:17 1253
原创 swift 笔记 (七) —— 闭包
闭包闭包是个自包含的,可以在代码中传递的“块”。。。好吧,不纠结定义,继续。swift的闭包,有点像C和Objective-C语言里的 代码块 {……} 闭包可以捕捉并且保存在它所被定义的那个东西的上下文中定义的常量和变量。事实上,在上一个笔记——函数,中的全局函数和嵌套函数,全都是闭包的特殊形式。全局函数——是一个带有函数名的,并不捕捉任何值的函数。
2014-06-07 00:22:14 1092
原创 swift 笔记 (六) —— 函数
函数在Swift中,每个函数都可以被当做一个类型使用,也就是说,可以把函数当作另一个函数的参数,当作另一个函数的返回值,用来定义变量等等。其实很多语言都可以这么干。函数的原型:func 函数名(参数名: 参数类型) -> 返回值类型 { //多个参数用”,”分隔 函数体}当然,函数的基本原型是这样的,还有很多变种,后面会一一提到最开始看到->这个
2014-06-06 13:40:43 884
原创 Swift 笔记 (五) —— 控制流
控制流(Control Flow)我不想这么译的。。。我更想叫控制语句,但是想想,这么叫也没错,意指流程控制。大部分用法跟C类似switch不是必须用break了,因为在C里面太常见的错误就是忘记加break导致奇怪问题的发生case在Swift中增强了功能,可以用范围表示,也可以用元组,值的类型也可以是混杂的for循环for-in 这个我们已经见过很多了
2014-06-06 00:24:49 903 5
原创 Swift 笔记 (四) —— 集合类型
集合类型Swift 提供了两种集合类型, Array, DictionaryArray与Dictionary 都需要存相同类型的数据 //实际测试的时候发现可以混杂类型,下面有例子Array 是有序的, Dictionary 是无序的Dictionary需要一组无唯一的索引用于查找,也就是keyArray原型: Array, SomeType指的是要放在Array
2014-06-04 19:34:11 1275 3
原创 swift笔记 (三) —— 字符和字符串
字符串和字符苹果要是不提供了unicode的字符串和字符,那就是他们公司所有人的脑袋都被门夹过他自己家都要发很多国家的版本的软件,怎么可能不用unicode呢此处略去30字...这里可以拿出来说的,也就是 Swift的 String支持所有的NSString的apiString中可以包含一些特殊字符:\0 (空字符) \\ (反斜线) \t (tab)
2014-06-04 05:58:25 1055
原创 swift笔记(二) —— 运算符
基本运算符Swift支持大部分的标准C语言的操作符,并且做了一些改进,以帮助开发者少犯低级错误,比如:本该使用==的时候,少写了个=, if x == y {…} 写成了 if x = y {…} 你就悲剧了在使用 +,-,*,/ 的时候,得到的结果溢出了,你还是悲剧了,要做很多检查保证不溢出才行然而,在Swift中,我们再也不用担心这些问题了,编译器会帮我们搞定的Sw
2014-06-04 04:54:50 971
原创 swift 笔记(一)—— 基础
开篇 今天凌晨随着 iOS8的发布,苹果还推出了研发多年的swift语言,不管将来它会发展得如何,做为脚本语言,swift集合了 python, lua, C#, java, Objective-C等语言的众多特性,对于iOS本身的开发,可以说是件好消息,让原本被Objective-C吓倒的一些人,又可以重新爬回到iOS的开发来了,可以让iOS市场,更加繁荣。
2014-06-03 22:53:22 1783 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人