【Swift】基础知识

基础部分

  1. 类型别名(type aliases)
Typealias 关键字
示例: typealias AudioSample = UInt16 ;  var maxAmplitudeFound = AudioSample.min
  1. 布尔(Boolean)类型
Swift 只有两个布尔常量,true 和 false
  1. 元组(tuples) 多个值组合成一个复合值
示例:let http404Error = (404, “Not Found”); var error: ( code:Int,  msg:String) = (code: 500, msg: "NO Auth")
用途: 一个函数 多个返回值
  1. 可选类型(optionals)
var code:Int ?
  1. 可选绑定(optional binding)
示例:var someOptional :Int? ; if let constantName = someOptional { statements }

运算符

  1. 空合运算符(Nil Coalescing Operator)
?? 
示例: a ?? B   ==>    a  !=  nil ?  a!  :  b
  1. 区间运算符(Range Operators)
...   和 ..<
示例:0 … 5    0 ..< 5
  1. Swift 3移出对 ++ ,- - 的支持

字符串和字符(Strings and Characters)

  1. 字符串可变性
var variableString = “Horse”;  variableString += “ and carriage”//字符串连接
如果不可变,声明为let
  1. 字符串是值类型
如果您创建了一个新的字符串,那么当其进行常量、变量赋值操作,或在函数/方法中传递时,会进行值拷贝。 任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作。
  1. 字符串插值
"\() "
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
  1. 计算字符数量
"word".characters.count

集合类型 (Collection Types)

Swift中var出的集合类型都是可变的
  1. 数组中元素替换
shoppingList[4...6] = ["Bananas", "Apples"]
  1. 数组的遍历
for (index, value) in shoppingList. enumerated() { print("Item \(String(index + 1)): \(value)") }
  1. 字典遍历
for (airportCode, airportName) in airports { print("\(airportCode): \(airportName)") }
  1. 移除键值对
airports["APL"] = nil
if let removedValue = airports. removeValue(forKey: "DUB") { print("The removed airport's name is \(removedValue).") } else { print("The airports dictionary does not contain a value for DUB.") }

控制流

  1. Switch
不存在隐式的贯穿
每一个 case 分支都必须包含至少一条语句。
复合匹配,并且用逗号分开
区间匹配
元组匹配
值绑定(Value Bindings)
Where,case 分支的模式可以使用where语句来判断额外的条件。
  1. 带标签的语句
label name: while condition { statements }

函数

  1. 多重返回值函数
  2. 可选返回值
  3. 默认参数值
func someFunction(parameterWithoutDefault: Int, parameterWithDefault: Int = 12) {}
  1. 可变参数
func arithmeticMean(_ numbers: Double...) -> Double {}
  1. 函数类型
每个函数都有种特定的函数类型,函数的类型由函数的参数类型和返回类型组成

闭包

  1. 闭包的三种形式
全局函数
嵌套函数
闭包表达式
  1. 推荐闭包语法优化
利用上下文推断参数和返回值类型
隐式返回单表达式闭包,即单表达式闭包可以省略 return 关键字
参数名称缩写
尾随闭包语法
  1. 逃逸闭包(@escaping)和非逃逸闭包

枚举

  1. 关联值
enum Barcode { case upc(Int, Int, Int, Int) case qrCode(String) }
  1. 原始值
原始值的隐式赋值
使用原始值初始化枚举实例

构造过程

  1. 构造过程中常量属性的修改
  2. 通过闭包或函数设置属性的默认值

自动引用计数

  1. 弱引用
  2. 无主引用
  3. 闭包引起的循环强引用
解决闭包引起的循环强引用
定义捕获列表
使用弱引用和无主引用

访问控制

  1. open,public,internal,fileprivate,private
公开访问或者其他更严访问级别的类,只能在它们定义的模块内部被继承。
公开访问或者其他更严访问级别的类成员,只能在它们定义的模块内部的子类中重写。
开放访问的类,可以在它们定义的模块中被继承,也可以在引用它们的模块中被继承。
开放访问的类成员,可以在它们定义的模块中子类中重写,也可以在引用它们的模块中的子类重写。
把一个类标记为开放,显式地表明,你认为其他模块中的类使用此类作为父类,然后你已经设计好了类的代码了。
  1. open和public的区别在于,public限定的class, property只能在模块内被继承和重载(但是可以在模块外调用),而open所修饰的class/property则可以在模块外被重载。
  2. 默认访问级别 internal
  3. 上下层关系

高级运算符

  1. 优先级和结合性
  2. 运算符函数(运算符重载)
类和结构体可以为现有的运算符提供自定义的实现,这通常被称为运算符重载。
自定义运算符(operator)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容