swift学习

2019-01-31  本文已影响0人  卿本陌

* 闭包

    * 闭包作为属性

    ```swift

    // 声明闭包类型

    typealias callback = (_ actionType : String, _ message : String) -> Void

    // 作为属性

    public var nativeCallback : callback!

    // 全局调用

    self.nativeCallback("aaa", "test")

    // 事件回调

    self.webManager.nativeCallback = {(actionType, message) in

        print(actionType,message)

    }

    ```

    * 闭包作为参数

        * @nonescaping(非逃离闭包,闭包在方法执行完成会从被程序移除)

        ```swift

    func getParams(_ id: String, handler: (Any) -> Void) {

    }

        ```

        * @escaping(逃离闭包,闭包被保留以便稍后执行并且函数的主体被执行,返回编译器。当执行结束时,传递的闭包的范围存在并且在内存中存在,直到闭包被执行)

            ```swift

            func getParams(_ id: String, handler: @escaping (Any) -> Void) {

            }

            ```

        * @autoclosure(自动闭包,当一个闭包没有参数的时候,就可以使用自动闭包了,更偏向描述一个表达式)

            ```

            func getParams(handler: () -> Void) {

                print("abc")

            }

            getParams(handle: print("abc"))

            ```

* mutaing

    * 用来修饰枚举和结构体中的方法,使其结构体或枚举中的方法可以修改结构体或者枚举中的变量

* lazy

    * 声明属性时,属性必须是var

* 类方法

    * static 关键字声明

    * class 用来覆盖父类的方法

* 下标

    ```

    subscript(index: Int) -> Int {

    get {

        // return an appropriate subscript value here

    }

    set(newValue) {

        // perform a suitable setting action here

    }

}

    ```

* convenience

    * https://swifter.tips/init-keywords/

* enum

    * swift调用oc的enum

    ```

      oc的enum  typedef NS_ENUM(NSUInteger, WYADrawerTransitionDirection) {

        WYADrawerTransitionFromLeft = 0, // 左侧滑出

        WYADrawerTransitionFromRight    // 右侧滑出

    };

    ```

    ```

    1.使用

    example:

    if direction.rawValue == 0 {

    }else {

    }

    ```   

    * oc调用swift的enum

    ```

    swift的enum  @objc public enum jumpType: Int {

            case push = 0

            case present = 1

        }

    ```

* notication

    * 自定义通知名称

    ```

    extension Notification.Name {

        static let closeWin = NSNotification.Name("closeWin")

    }

    ```

上一篇下一篇

猜你喜欢

热点阅读