本文介绍: 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&gt;  [DateType]

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

                    2.声明时候赋值

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

                    3.(repeating: ,count: int)

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

3.字典:Dictionary<key:value>

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

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

JSON

{[

1 : 3

],[

5:”c

]}

控制流

条件结构

  If结构

  Switchcase结构

循环结构

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 : &amp;a , b : &amp;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 sonfather{

//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

}

原文地址:https://blog.csdn.net/qq_62904742/article/details/130866256

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_37412.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注