swift学习
* 闭包
* 闭包作为属性
```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")
}
```