id -> Any
completion:(dispatch_block_t)completion -> completion: @escaping () -> Void//没有参数也没有返回值的闭包,@escaping表示闭包可能会在返回值后调用,比如异步操作
@objc
将 Swift 中的特性(类、协议、属性、方法等)暴露给 Objective-C 使用
让 Swift 中的某个类、协议、方法等被 Objective-C 使用
带来一些限制,比如使得方法或属性的类型不能是非 Objective-C 兼容的类型
初始化问题
如果你类的属性,及不在声明时初始化,也没有设置默认值,也不是可选类型就必须在init时赋值
如果是可选类型就可以不赋值,但是默认都是nil
创建指定类型array
var internalConstraints = NSLayoutConstraint
重写init方法
init方法里面如果是基础了UIVIewController必须在init方法里面实现
super.init(nibName: nil, bundle: nil)
也必须实现一个
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
//required init?(coder:) 方法:这是一个必要的初始化方法,当从 storyboard 或 nib 文件加载视图控制器时,系统会调用它。这里需要对所有非可选属性进行初始化。通常你会提供默认值或使用一些解码操作来初始化这些属性。
guard的使用场景
问题
OC的宏怎么转换