swift知识点

2018-04-27  本文已影响21人  sweetpf

简单值

关键字

现在的访问权限则依次为:open,public,internal,fileprivate,private。

open 修饰的 class 在 Module 内部和外部都可以被访问和继承
open 修饰的 func 在 Module 内部和外部都可以被访问和重载(override)
public 修饰的 class 在 Module 内部可以访问和继承,在外部只能访问
public 修饰的 func 在 Module 内部可以被访问和重载(override),在外部只能访问
final 修饰的 class 任何地方都不能不能被继承
final 修饰的 func 任何地方都不能被 Override 

控制流

语法

try、try、try?

try?会将错误转换为可选值,当调用try?+函数或方法语句时候,如果函数或方法抛出错误,程序不会发崩溃,而返回一个nil,如果没有抛出错误则返回可选值。

as、as!、as?

?、??

枚举和结构体 enum

高阶函数

let stringArray = ["Objective-C", "Swift", "HTML", "CSS", "JavaScript"]
func stringCount(string: String) -> Int {
    return string.characters.count
}
stringArray.map(stringCount)

表示给数组stringArray中的每个元素执行stringCount方法,最后返回的是数组类型

$0、$1

可以用0、1、2来表示调用闭包中参数,0指代第一个参数,1指代第二个参数,2指代第三个参数,以此类推。

in 闭包中的关键字,作为一个分隔符号,分开闭包参数和闭包体。当使用$0、$1等可以省略in

init deinit

override 子类的方法重写父类的实现

func 实例方法 class func 类方法

单例

class SingletonClass: NSObject {

    static let shared = SingletonClass()
    
    // Make sure the class has only one instance
    // Should not init or copy outside
    private override init() {}
    
    override func copy() -> Any {
        return self // SingletonClass.shared
    }
    
    override func mutableCopy() -> Any {
        return self // SingletonClass.shared
    }
    
    // Optional
    func reset() {
        // Reset all properties to default value
    }
}

函数、实例方法、类方法

- 自定义函数,需要根据函数的参数申明前是否添加"_"来区别对待,
例如:
1、func calculateStatistics(_ scores: [Int]) -> (min: Int, max: Int, sum: Int) {     这样写就这样传参calculateStatistics([5, 3, 100, 3, 9])
2、 func calculateStatistics(scores: [Int]) -> (min: Int, max: Int, sum: Int) {   这样写就这样传参calculateStatistics(scores:[5, 3, 100, 3, 9])

- <实例>.<方法名>(参数值,参数名:参数值,参数名:参数值...) // 方法调用第一个参数不写参数名,后面的全部要写。特殊情况是尾闭包,往下看
- <类初始化>(参数名:参数值,参数名:参数值...) // 类初始化所有参数都需要加参数名

- 外部参数名(External Parameter Names)
有时候,调用函数时,给每个参数命名是非常有用的,因为这些参数名可以指出各个实参的用途是什么。如果你希望函数的使用者在调用函数时提供参数名字,那就需要给每个参数除了局部参数名外再定义一个外部参数名。外部参数名写在局部参数名之前,用空格分隔。例如:public mutating func remove(at index: Int) -> Array.Element里面的at 

- 简写外部参数名(Shorthand External Parameter Names)
如果你需要提供外部参数名,但是局部参数名已经定义好了,那么你不需要写两次参数名。相反,只写一次参数名,并用井号(#)作为前缀就可以了。这告诉 Swift 使用这个参数名作为局部和外部参数名。

闭包 -> block

Swift中的get & set 方法

mutating

为了能够在实例方法中修改属性值,可以在方法定义前添加关键字mutating

open,public,internal,fileprivate,private

swift 经典库

上一篇 下一篇

猜你喜欢

热点阅读