熟悉Swift 如何用Cocoa 和Cocoa Touch完成工作很重要
我们可以将软件看作模块化工具的集合,而不是单个大型实体。
SpriteKit,它是iOS和OS X都可以使用的一种框架用于制作快速、高效的2D游戏和图形。Instruments它是用于Mac iOS 应用程序的探查器和分析工具
表示提示或建议
表示警告或警示
#会告诉编译器该名称为本地参数名和外部参数名
func函数名(#本地参数名:数据类型) {。。。。。}
设定参数默认值
定义函数时,为参数设定默认值
使用可变参数,可以使一个参数接受零个或多个指定类型的值。设定一个可变参数需要 在参数类型名后添加“...”。
求平均值:
import Foundation
func average(numbers: Double...){
var total: Double = 0
for number in numbers {
total += number }
println(total/Double(numbers.count)) }
average(1,2,3,4,5) average(3,8,19)
3.0
10.0
注意:可变参数只有一个,可变参数必须放在最后,作为最后一个参数
使用变量参数实现字符串右对齐
import Foundation
funk aligeRight(var string:String,count :Int,pad:Character) {
let amountToPad = count -countElements(string)
//遍历
for _in 1…amountToPad {
string = pad +string
}
println(string)
}
let originalStrinf1 = “swift”
alignRight(originalString1,10,”*”)
let originalString2 = “Hi”
alignRight(originalString2,"*")
let originalString3 = "" alignRight(originalString3,"*")
运行结果:
*****swift
********Hi
**********
用一个函数修改参数的值,并且让这些变化在函数调整后让然有效,
参数名前加inout关键字来实现—>定义输入-输出参数
func 函数名(inout 参数名:数据类型,……){…}
return的表达式类型和函数的返回类型一致
返回多个返回值时使用元组类型
使用函数类型作为参数类型或者返回值类型
Swift提供了 74 个标准函数
绝对值函数abs(数值) 返回值为o或者正数
最大值函数 max(参数 1,参数2,224)">3,...)参数可以是数值,字符串,字符
最小值min()
函数 map(序列,闭包表达式),它的功能是返回一个新的序列。
序列的最大值函数maxElement()/最小值函数 minElement()
maxElement()函数获取一个序列中最大值的元素。maxElement(序列)数值或者一个范围
minElement()函数可以获取一个序列中最小值的元素minElement(数值或者一个范
contains(,元素) 判断序列是否包含指定元素函数 返回值为布尔类型
true包含,false不包含 比较时会区别字母的大小写
#import Foundation
var languages = ["Swift","Objective-C","C"] //判断在languages 数组中是否包含"Swift"字符串if contains(languages,"Swift") == true{
println("languages序列中包含元素“Swift”") }else{
println("languages序列中不包含元素“Swift”") }
//数组中是否包含"Java"{
println("languages序列中包含元素“Java”") }else{
println("languages 序列中不包含元素“Java”") }
序列排序函数sort(序列)序列是指数组
var languages = ["Swift","C"]
println("排序前:languages=\(languages)")
let sortlanguages:()=sort(&languages)
println("排序后:languages=\(sortlanguages)")
var value = [8,1,5,7,0]
println("排序前:value=\(value)")
let sortvalue:()=sort(&value)
println("排序后:value=\(sortvalue)")
排序前:languages=[Swift,Objective-C,C]
排序后:languages=[C,Swift]
排序前:value=[8,0]
排序后:value=[0,8]
Program ended with exit code: 0
序列倒序函数reverse(序列)序列是数组
import Foundation
var languages = ["Swift","C"]
println("languages=\(languages)")
println("倒序输出:")
for i in reverse(languages){
println(i) }
var value = [1,10] println("value=\(value)")
println("倒序输出:")for i in reverse(value){
println(i) }
运行结果如下:
languages=[Swift,C]
倒序输出:
C
Objective-C Swift
value=[1,10] 倒序输出:
10
4
8
1
闭包是自包含的函数代码块,可以在代码中被传递和使用,C和 Objective-C中的代码块(blocks)以及其他一些编程语言中的Lambda 函数比较相似
{(参数列表) ->返回值类型 in
语句
}
参数可以是常量,变量,输入-输出参数,但没有默认值或最后使用可变参数,元组可作为参数和返回值
关键字in便是闭包的参数和返回值类型定义已经完成,闭包函数体即将开始
闭包表达式最长用在其他的函数中,并不是单独的去使用它。
Trailing闭包 :将一个很长的闭包表达式作为最后一个参数传递给函数,可以使用
类
pointer指针
类的构成:
属性:它将值和特定的类关联。
下标脚本:访问对象、集合等的快捷方式。
class类名{//具体内容}
实例化对象也可以称为类的实例
类名可以使用“大骆驼拼写法”SomeClass
实例化对象(类的实例)
var/let 对象名=类名()
swift中属性可以将值跟特定的类。结构或者枚举关联。
存储属性就是存储特定类中的一个常量或变量,根据数据是否可变,分为常量存储属性和变量存储属性
let 常量存储属性名:数据类型 = 初始值
var 变量存储属性名:数据类型 = 初始值
初始化:::——>>>initializers
对存储属性的访问用.
如果开发者只有在第一次调用存储属性时才能确定初始值,这时需要使用延迟存储属性 实现。关键字:lazy
计算属性不存储值,而是提供了一个 getter 和 setter来分别进行获取值和设置其他属性的值。
getter使用 get 关键字进行定义,其一般形 式如下:
get{
…
return 某一属性值
}
setter使用 set 关键字进行定义,其一般语法形式如下:
set(参数名称){
…
…
}
—————————————包含set和get
var 属性名:数据类型{
get{
…
return 某一属性值
}
set(参数名称){
…
某一属性值
。。。
}
}
在计算属性中,如果只有一个 getter,则称为只读计算属性。只读计算属性可以返回一 个值,但不能设置新的值。
类型属性就是不需要对类进行实例化就可以使用的属性。它需要使用关键字 class 进行 定义
class var 类型属性名:数据类型{
…
返回一个值
}
修改:
属性监视器用来监控和响应属性值的变化。每次属性被设置值的时候,都会调用属性监 视器,哪怕是新的值和原先的值相同。一个属性监视器由willSet 和 didSet 组成,其中,willSet在设置新的值之前被调用,它会将新的属性值作为固定参数传入。didSet在新的值被设置之后被调用,会将旧的属性值作为参数传入,可以为该参数命名或者使用默 认参数名 oldValue。 默认的参数可以是不可以交换使用的,在延迟属性中不可以使用属性监视器 ,willSet 和 didSet 也可以单独使用。
var属性名:数据类型 =初始化
willSet(参数名){
…}
didSet(参数名) {
…}
Swift 会使用默认 newValue 表示新值
方法是定义在类中的函数。分为实例方法被定义在类中,但是由类的实例调用。此类方法叫实例方法
func 方法名()-> 返回值类型{…}
class 类名{
class fun c方法名{ 参数1:数据类型,参数2:数据类型,…){
…}}
变量名称 定义范围
存储属性 定义在类中
下标脚本通过 subscript 关键字进行定义,
subscript(参数名称1:数据类型参数名称2:数据类型...) ->返回值的数据类型 { get {
//返回与参数类型匹配的类型的值}
set(参数名称) {
// 执行赋值操作
} }
可选链接可以判断请求 或调用的目标(属性、方法、下标脚本等)是否为空 如果目标有值,那么调用就会成功; 相反,则返回空(nil)。对于多次请求或调用的可以被链接在一起形成一个链条。Swift中 的可选链接和 Objective-C中的消息为空类似,但是 Swift 可以使用在任意的类型中使用,并且失败与否可以被检测到。
用?来标示