Swift期末复习

Ios开发:OC   Swift

基本数据类型

整形Int

浮点型Double和Float

布尔型Bool

字符串型String

数组型Array

字典型Dictionary

元组Tuple

Let http = (404, “Not found”)

读取: 1.赋值法 2.下标访问法

可选类型Optional

var a : String ? = “Student”

“”

   nil:对应存储空间没有数据

可选型就像一个盒子,如何打开这个盒子?(如何读取可选型数据?)

1.强制拆包   在可选型后加!

2.可选型绑定:lf let a = a {

//print(“a”)

}else{

    Print(“该可选型为nil”)

}

3.nli聚合运算 var valueOfReward = a ?? “No Data”

集合

1.数组:Array<DateType>  [DateType]

            初始化:1.先声明空数组,然后逐步赋值 append()

                    2.声明时候赋值

var a : [int] = [ 1,2,3,4 ]

                    3.(repeating: ,count: int)

2.集合:Set<DataType> : 一组相同数据类型的元素组组成的,每个元素的值都唯一

3.字典:Dictionary<key:value>

     初始化: var a = [Int : Int]()

 Var a = [9:12,4:3]

JSON

{[

1 : 3

],[

5:”c”

]}

控制流:

条件结构:

  If结构

  Switch-case结构

循环结构

While/do while

for in 循环

for(int a = 1;a<= 6;a++)

var a : Int = 9

for value in a

for 起始值 in 结束值

遍历词典的方法:

For (a1,char)in a{

Print(a1)

}

函数func

关键词 函数名 (形参: 参数类型) -> 返回值的数据类型{

//TODO

return result

}

func name (a : int) -> int{

return a

}

函数的分类:

1.无参数f

func name () -> int{

return a

}

2.无返回值函数

func name (a : int) {

//TODO

}

3.多个返回值函数

func name (a : int) -> (int,int){

return a,b

}

4.可变形参函数

Func sum (numbers: Int ...) -> Int{

var result =0

for number in numbers{

result = result + number

}

return result

}

函数类型:

(Int,Int)->  (Int)  intintint型

 () - >  ()       相当于空元组

inout类型参数:

swift中两种参数传递方式:值类型   引用类型

值类型:调用参数过程中不会影响原始数据

引用类型:把参数本身的引用(内存地址)会影响原始数据

Swift中只有一种引用类型就是Class(类)

inout:让值类型以引用方式传递

eg:

func swap(a : inout Int , b : inout Int){

     let temp = a

     a = b

     b = temp

}

var a = 5

var b = 6

swap(a : &a , b : &b)

print(“a is \(a),b is \(b)”)

tips: 1.inout 修饰的参数不能有默认值,有范围的参数值不能被inout修饰

2.一个参数一旦被inout修饰就不能被var或者let修饰,简言之,他们不能被称作是变量或者常量

第二部分   面向对象

一、闭包

闭包是一个功能性自包含模块,可以在代码中被当作参数传递或者直接使用,可以捕获和存储上下文中任意常量和变量的引用

分类:

    1. 全局函数:有名字但不会捕获任何值的闭包
    2. 嵌套函数:有名字可以捕获其封闭函数域内值闭包
    3. 闭包表达式:没有名字但可以捕获上下文变量和常量的值

嵌套函数和闭包表达式的区别:

  1. 嵌套函数是一种在复杂函数中命名和定义自包含代码块的简洁方式。
  2. 闭包表达式则是一种利用内联闭包的方式实现的更为简洁的方式。

闭包表达式:

定义:一段程序代码通常由常量、变量和表达式组成,之后使用一对花括号“{ }”来表示闭合并包裹着这些代码,由这对花括号包裹着的代码块就是一个闭包。

  语法:

{

    ( 参数名1:参数类型,参数名2:参数类型… ) -> 返回值类型 in

      闭包函数体

      return 返回值

}

eg:

var theClose = {

 (s1 : String, s2 : String) -> Bool in

return s1>s2

 }

二、枚举类

enum Name{

case Value

}

枚举类名字必须以大写字母开头

三、类与结构体

结构体:struct a {

//TODO

}

类:    class a {

//TODO

}

值类型是结构体,引用类型是类

引用类型的等价运算是“===”

四、属性

  1. 存储属性:存储在一个类或者结构体的变量或者常量
  2. 计算属性:经过计算后才能返回属性值àget,set方法

Get:通过计算属性的get方法来读取属性的值。

Set:计算属性的set方法可以根据计算属性的值来设置其他相关存储属性的值。

注意:计算属性的set方法是没有返回值的。

  1. 类型属性:一个类型的所有实例都共享的属性,用static标识

lazy:延迟存储属性,只有示例第一次调用时才会计算初始值

属性观察器;

willSet() 被改变前触发或调用

didSet() 属性值发生改变时触发或者调用

init(初始化):

 eg:

class Student{

  var name :  String?

  var age : Int?

init(name : String, age : Int){

       self.name = name

       self.age = age

}

}

五、方法   本质是一个函数

方法分为实例方法和类型方法。

  1. 实例方法与实例相关联,而类型方法与类型本身相关联,和该类型的实例无关。
  2. 类型方法是只能由类型本身调用的方法。通过在方法的前面加static实现的,在类型方法中,self指向类型本身,而不是类型

可变方法:mutating

下标方法 subscript

格式:

subscript ( index : Int ) -> Int {

              get {

                     // return index

              }

              set ( newValue ) {

                     // set new value

              }

}

六、类的特征:封装,继承,多态

继承:

1.每个子类只能有一个父类

2.类的继承没有深度限制

class son :father{

//TODO

}

没有父类的类叫基类

子类的多态性:编译器根据上下文判断一个子类示例应该表现为哪一个类是实例

重载:重写父类的方法

可以用super来引入父类的实现

语法:

override func a(){

//TODO

}

构造:init关键词

析构:deinit关键词

      只有引用类型才有析构,类的实例使用结束后释放前,析构器才调用

语法: deinit{

//TODO

}

七、协议(接口)

protocol a{

//TODO

}

如何引用:

class Student :A {

}

关于权限:

{get,set}可读写的   {get}只读属性

如果类既有父类又有协议,那么父类写在协议的前面

八、范型

泛型是Swift的一个重要特征,它是一种适用于任何类型的可重用函数或类型,可以避免编写重复的代码。

1.泛型函数,是指函数中的参数可以是任何类型的。

在函数名后面加上“<T>”,表示类型名占位,用来替代具体的类型名。在函数的参数列表中,参数a和b的类型均为T,说明a和b是同一种类型,但具体是什么类型还不知道。

2.范型类:表示在定义阶段无法确定的一种类型,这个类型在类实例化的时候才能确定。

九、扩展

  1. 定义:

扩展就是向一个已有的类、结构体、枚举型或者协议增加新的功能。

  1. 扩展的内容:

添加计算型属性、添加实例方法和类型方法、添加新的构造器、添加下标等。

  1. 格式:

extension  OldType {

       new functions

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值