【swift 关键词】让我们牢记swift中的一些关键字用途

【swift 关键词】让我们牢记swift中的一些关键字用途,第1张

概述##好记性不如烂笔头 学习swift 原英文版本 学习swift 翻译中文版 swift数据类型与oc比较 ###进入 退出swift goswift > swift//退出goswift > ctr+z ###第一个关键字guard 就是守护。guard语句判断其后的表达式布尔值为false时,才会执行之后代码块里的代码,如果为true,则跳过整个guard语句guard后面必须跟els

##好记性不如烂笔头

学习swift 原英文版本

学习swift 翻译中文版

swift数据类型与oc比较

###进入 退出swift

goswift > swift//退出goswift > ctr+z

###第一个关键字guard

就是守护。guard语句判断其后的表达式布尔值为false时,才会执行之后代码块里的代码,如果为true,则跳过整个guard语句guard后面必须跟else语句

###inout

在参数前面用inout修饰,在函数内部实现改变外部参数//调用的时候swapTwoInts(&one,two: &two)定义的时候func swapTwoInts(inout one:Int,inout two:Int) {     let temp = one     one = two     two = temp}

###uNowned

避免循环引用,使用uNowned修饰( let uNowned)weak仅能修饰变量,不能修饰常量( var weak)

###lazy

懒加载,修饰闭包OC的lazy加载是重写属性的get方法swift的lazy是只执行一次

###willSet dIDSet get set

willSet 添加观察属性变化 类似kvo里面的addobserverdIDSet 检查属性已经变化

###mutating

用在struct和enum中的函数前面,作用是可以修改struct,enum和protocal中的属性值struct SRectangle {  var wIDth = 200}extention SRectangle {    mutating func varifyWIDth(num:Int) {}}

###Subscripts Closures

下标的关键词 subscript闭包的关键词 inswift中所有闭包默认@noescape,延迟 *** 作,网络延迟需要@escape.@autoclosure可以将一句话封装成闭包

###typealias

别名 typealias unitype = Int常见应用 typealias bigProtocal = protocal<BigProtocal,CigProtocal>

###defer

1.延缓执行2.多个defer的情况,像栈一样,后进先出,从下往上执行

###throws throw

throws 来声明异常,throw 来抛出异常

###do-catch

异常处理,注意不是try catch!func functionWillThrowError() throws {    //实现}do {    throw functionWillThrowError()}catch MyError.NotExist{}catch MyError. OutOfRange{}

###repeat

repeat是循环重复,是do-while的替身repeat {}while <#条件#>

###func 参数_

请注意定义方法有什么不同var a=3,b=6func swapValue(inout a:Int,inout b:Int){}方法调用 swapValue(&a,b:&b)func swapValue(inout a:Int,inout _ b:Int){}方法调用 swapValue(&a,&b)注意参数添加_ 有一定的不同函数还可以作为一种类型var mathFunc :(inout Int,inout Int)->() = swapValue

###extention

extension Int {    subscript(digitIndex: Int) -> Int {        var decimalBase = 1        for _ in 0..<digitIndex {            decimalBase *= 10        }        return (self / decimalBase) % 10    }}746381295[0]//5

###value && reference type

值类型 和 引用类型值类型(Value Types):每个实例都保留了一分独有的数据拷贝。如结构体 (struct)、枚举(enum) 和元组(tuple)引用类型(Reference Type):每个实例共享同一份数据来源,如类(class)// 下面是一个值类型的例子struct MyStruct { var data = -1 }var s1 = MyStruct()var s2 = s1                           // s2是s1的拷贝s1.data = 42                         // 值类型,改变s1的值,s2不受影响println("\(s1.data),\(s2.data)")     // 输出结果 "42,-1"//值类型: 复制的时候,相当于创造了一个完全独立的实例,这个实例保有属于自己的独有数据,数据不会受到其他实例的数据变化影响// 下面是一个引用类型的例子class MyClass { var data: Int = -1 }var x = MyClass()var y = x                           // y是x的拷贝x.data = 42                         // 引用类型,更改x的值,等于同时修改了yprintln("\(x.data),\(y.data)")     // 输出结果 "42,42"//引用类型: 复制的时候,实际上是创造了一个共享的实例分身,两者是共用一套数据(数据存储的地址指向同一块内存)。因此修改其中任何一个实例的数据,也会影响到另外一个

###is as

is 是类型检查var movIECount = 0var songCount = 0 for item in library {    if item is MovIE {        movIECount += 1    } else if item is Song {        songCount += 1    }}as 是类型转化 as!,as?for item in library {    if let movIE = item as? MovIE {        print("MovIE: \(movIE.name),dir. \(movIE.director)")    } else if let song = item as? Song {        print("Song: \(song.name),by \(song.artist)")    }}

###map flatMap filter reduce

Swift提供了map、filter、reduce这三个高阶函数作为对容器的支持

###struct 和 class 区别

struct是value type,class 是reference type. struct 直接跟变量赋值,class不能 struct赋值给另外一个struct,值不变,但是class要变 struct赋值给let,则里面不属性不能修改,class则可以修改属性值 extention struct 添加新funcs时需要添加mutating修饰,class不用添加修饰 struct 没有继承,class有继承

###IBDesignable 和 IBInspectable

在Swift里,@IBDesignable关键字写在class前即可。 在OC里,是IB_DESIGNABLE这个关键字,写在@implementation前即可 IBInspectable 在swift里,@IBInspectable关键字写在需要显示的变量前即可 在OC里,是IBInspectable这个关键字,写在需要显示的变量前即可

更多信息,点击> http://www.jb51.cc/article/p-flhwlmmn-bod.html

总结

以上是内存溢出为你收集整理的【swift 关键词】让我们牢记swift中的一些关键字用途全部内容,希望文章能够帮你解决【swift 关键词】让我们牢记swift中的一些关键字用途所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1075733.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存