加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift实战入门笔记 -- 大学霸78两章

发布时间:2020-12-14 01:43:45 所属栏目:百科 来源:网络整理
导读:熟悉 Swift 如何用 Cocoa 和 Cocoa Touch 完成工作很重要 我们可以将软件看作模块化工具的集合 , 而不是单个大型实体。 SpriteKit , 它是 iOS 和 OS X 都可以使用的一种框架 用于制作快速、高效的 2D 游戏和图形。 SceneKit 3D 场景和图形 Instruments 它是

熟悉Swift 如何用Cocoa Cocoa Touch完成工作很重要

我们可以将软件看作模块化工具的集合,而不是单个大型实体。

SpriteKit,它是iOSOS X都可以使用的一种框架用于制作快速、高效的2D游戏和图形。
SceneKit3D场景和图形
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

闭包是自包含的函数代码块,可以在代码中被传递和使用,CObjective-C中的代码块(blocks)以及其他一些编程语言中的Lambda 函数比较相似

{(参数列表) ->返回值类型 in

语句

}

参数可以是常量,变量,输入-输出参数,但没有默认值或最后使用可变参数,元组可作为参数和返回值

关键字in便是闭包的参数和返回值类型定义已经完成,闭包函数体即将开始

闭包表达式最长用在其他的函数中,并不是单独的去使用它。

Trailing闭包 :将一个很长的闭包表达式作为最后一个参数传递给函数,可以使用



pointer指针


类的构成:

属性:它将值和特定的类关联。
下标脚本:访问对象、集合等的快捷方式。

方法:实现某一特定的功能,类似于函数。

class类名{//具体内容}

实例化对象也可以称为类的实例

类名可以使用“大骆驼拼写法”SomeClass

属性、对象以及方法使用“小骆驼拼写法”


实例化对象(类的实例)

var/let 对象名=类名()

swift中属性可以将值跟特定的类。结构或者枚举关联。

分为存储属性,计算属性和类型属性

存储属性就是存储特定类中的一个常量或变量,根据数据是否可变,分为常量存储属性和变量存储属性

let 常量存储属性名:数据类型 = 初始值

var 变量存储属性名:数据类型 = 初始值

初始化:::——>>>initializers

对存储属性的访问用.

对象名.常量存储属性名/变量存储属性名

修改存储属性:

对象名.变量存储属性 = 修改的内容

如果开发者只有在第一次调用存储属性时才能确定初始值,这时需要使用延迟存储属性 实现。关键字:lazy

lazy var 属性名:数据类型 = 初始内容

计算属性不存储值,而是提供了一个 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:数据类型,…){

…}}

调用:类名.方法名(参数1,参数2.,,,)

变量名称 定义范围

存储属性 定义在类中

局部变量 函数、方法或闭包内部

全局变量 函数、方法、闭包或任何类型之外定义的变量


局部变量和存储属性同名的解决方法——self属性

下标脚本通过 subscript 关键字进行定义,

subscript(数名称1:数据类型参数名称2:数据类型...) ->返回值的数据类型 { get {

//返回与参数类型匹配的类型的值}

set(参数名称) {
// 执行赋值操作

} }

可选链接可以判断请求 或调用的目标(属性、方法、下标脚本等)是否为空 如果目标有值,那么调用就会成功; 相反,则返回空(nil)。对于多次请求或调用的可以被链接在一起形成一个链条。Swift中 的可选链接和 Objective-C中的消息为空类似,但是 Swift 可以使用在任意的类型中使用,并且失败与否可以被检测到。

用?来标示

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读