美文网首页与时俱进的IT
UI(四十五)Swift

UI(四十五)Swift

作者: 社会主义顶梁鹿 | 来源:发表于2018-07-30 18:10 被阅读1次

    Swift中没有.h .m文件

    Swift中.swift文件 声明实现不在创建

    导入类名:不需要再导入类名 所有类名都是分开的 可以直接访问到

    导入框架:直接导入框架名 如:import UIKit

    OC程序入口是main函数 

    Swift代码是从上往下顺序执行@UIApplicationMain程序的主入口

    class:用来声明类

    实例:class AppDelegate: UIResponder -> class 类名:父类

    导入代理协议名字:在父类后面继续添加逗号 写上代理、协议名字

    Swift声明变量:var window: UIWindow?

    Swift声明方法:func 用来表示方法

    ----------------------------

    变量、常量的声明:

    var 声明变量

    let 声明常量 不允许改变

    OC: 数据类型 名字 = 值

    Swift:

    var 名字:数据类型 = 值

    let 名字:数据类型 = 值

    Swift里面语句结束可以不写分号 但是如果一行有多条语句 必须添加分号

    Swift也支持中文作为变量名

    字符串可以直接通过+拼接

    如果声明的对象是变量 但是并没有去改变这个变量的值 系统会提示可以声明成常量

    Xcode7.3后(swift2.2) ++将在swift3中弃用 改成+=

    Swift自动推断数据类型 如果没有告诉变量的数据类型会自动推断数据类型

    Swift不同的数据类型不允许计算

    数据类型转换:数据类型(要转换的变量)

    如果声明变量的时候不想在声明的时候去赋值 必须添上变量的数据类型(没有推断的依据 推断不出数据类型)

    --------------------------

    Swift方法的定义和调用 

    func定义方法

    func 方法的名字()

    OC:

    - (void) viewDidLoad{

    }

    Swift:

    func

    oc:

    - (void)viewDidAppear:(BOOL)animated{

    }

    Swift:

    func viewDidAppear(animated: Bool) {

    }

    ---------------------

    Swift中调用其他类的方法用.来调用

    区间

    全闭合区间 区间

    半闭合区间

    1 2 3 4 5

    全闭合区间 1...5

    1 2 3 4 (5)

    半闭合区间 1..5

    在 swift 中 提倡用区间

    --------------------------

    函数

    {} 范围

    func 函数名(){}

    class 类名:父类{}

    var 变量名 = 值

    let 常量名 = 值

    调用别的方法 通过.调用

    color.redColor()

    小括号代表是一个方法

    --------------------------

    可选类型(可空类型):

    swift 数据类型是非常严谨的,语法不严谨(英文、中文) 在实际工作的时候,有可能会把一个空值赋给一个变量

    swift 不支持不同数据类型赋值

    故 swift出来一个解决办法--->可选类型(可空类型)

    可选类型的符号:

    ? 表示声明的是一个可选类型,它也是一种数据类型

    ! 表示拆包 把可选类型转换成原有数据类型

    拆包:转换成原有数据类型

    Optional(傻狗)->傻狗

    隐式拆包:可选类型变量后!->let name1:NSString! = name;

    显式拆包:name!

    声明:

    var 变量名:数据类型?

    var window: UIWindow?

    ----------------------------

    as 作为、明确数据类型->使用(1、跟其他数据类型计算《两者是包含关系》 2、需要把子类转换成父类的时候)

    as -> 明确数据类型->在使用的时候

    as->子类转父类(明确子类是父类)

    NSString是一个类->结构体string

    ***不同数据类型之间转换 必须有支持数据类型的转换方法才可以转换

    ***如果是自类转父类可以直接赋值

    is 判断是不是某个数据类型 某一数据类型(类名)

    swift 字符串判断==是否相同

    插入字符串"XXX\(插入的内容)"

    -----------------------------

    枚举:

    变化:不止可以把数字当做枚举,同时还可以把字符串当做枚举值,还可以把几个内容放在一个枚举值里面

    变化:元素之前使用case表示

    在使用的时候 枚举的名字.元素 、 .元素

    rawValue 枚举里面的值

    声明枚举的公式:

    第一种、

    enum 枚举名字:Int{

    case 元素

    case 元素

    case 元素

    }

    第二种、

    enum 枚举名字:Int{

    case 元素,元素,元素

    }

    --------------------------------

    元组:tuple

    1.可以存放不同数据类型的元素

    2.取值方式

    1.可以使用下标取值,也是从零开始

    2.通过key取值(必须定义)

    公式: 1. (1,"mm",对象) 通过下标

     2. (key:值,key:值) 通过key,可以取到不同类型的值key不需要引号

    闭包:

    封闭的代码块 也可以把函数当成一个闭包

    let 闭包名字 = {(参数列表) -> 返回值类型 in 

    具体执行的代码

    如果有返回值,就return返回值

    }

    in 前面是 声明 后面是实现 in后面进入代码块

    swift:

    数组 字典:[]

    元组:()

    oc:

    数组:[]

    字典:{}

    1.完整公式

        {(参数列表)->返回值类型 in 实现代码}

    如:let block = {(a:Int, b:Int)->Int in return a + b}

    2.简化版:无参数 无返回值公式

        {实现代码}

    如:let block = {}

    3.简化版:有参数 无返回值公式

        {(参数列表) in 实现代码}

    如:let block = {(a:Int) in print(a)}

    4.调用

    闭包名()

    如:block()

    1.声明包含闭包的方法

    func 方法名(闭包名:(参数列表)->返回值类型){ 闭包名(实参列表)}

    如:func loadData(respose:(message:NSString)-Void){respose(message:"完成")}

    2.调用包含闭包的方法

    方法名{(参数列表) in 实现代码}

    如:loadData{(message:NSString) in print(message)}

    三:typealias 替代

    typealias 要替代成的名字 = 要替代的数据类型

    如:typealias Height = Float

    结构体

    1.增加方法(可以调用方法 也可以添加方法)

    2.增加实例化方法

    调用

    使用实例化方法

    结构体

    1.改变

    《1》自动生成实例化方法

    《2》可以在结构体中 创建方法

    《3》可以在结构体中 调用方法

    2.公式

    声明:

    struct 结构体名{

    let(var) 变量?

    func(){}

    }

    如果方法 改变结构体中的 值 需要在方法前面加上mutabing

    使用:

    let(var) 变量名 = 结构体名.init()

    let(var) 变量名 = 结构体名.init(实参)

    3.与类的区别

    1.结构体偏向于 处理数据

    2.类 偏向于 处理逻辑、关系

    3.类中的对象 有对象的特征:封装 继承 多态

    4.引用计数的处理 结构体有专门处理变量的引用计数

    相关文章

      网友评论

        本文标题:UI(四十五)Swift

        本文链接:https://www.haomeiwen.com/subject/bytqvftx.html