Swift学习笔记
写在前面的话,刚开始接触Swift,基于swift3.0。理解的比较浅显,目标是知道怎么用。具体为什么这么用有些还不知道。
1、在swift自定义一个UIView类的时候需要重写override init(frame:CGRect)方法和实现必写的方法required init?(coder aDecoder:NSCoder)
如果只写了override init(frame:CGRect),系统会默认提示实现required init?(coder aDecoder:NSCoder)
初始化方法2、在OC中的宏定义#define在swift中没有了可以用常量或者函数代替,如常用的:屏幕的宽高和自定义颜色
用常量和方法代替OC中的宏定义(#define)3、swift中// MARK: - XXXXXX 相当于#pragma mark - XXXXXX
4、代理传值和OC中代理差不多用关键字protocol
定义一个代理:
protocol MenuViewDelegate:NSObjectProtocol{
func menuViewWithSelectItem(menuview:MenuView, itemButton:MenuItemButton)
}
因为代理要用weak关键字修饰,如果在代理方法的后面不加上NSObjectProtocol直接用weak修饰的话。编译器会报错。
在一个类中关联代理 weak var delegate:MenuViewDelegate? =nil 代理必须是可选的加“?”
在另一个类使用代理的时候,引入代理不是OC中的“<>” 而是直接在类的父类之后用逗号隔开“,”
引入代理代理也是页面传值的一种实现方式,还有另外两种(闭包和参数传值具体可借鉴这位网友的文章http://www.jianshu.com/p/636f0aca4fa3)
因为Swift中的结构体和枚举也可以有协议。而结构体和枚举不通过引用计数来管理内存,所以枚举和结构体的协议不能用weak修饰,因此如果在Swift中的协议不加上NSObjectProtocol或class的时候,用weak修饰编译器会报错,具体解释可以看喵神的这篇文章(http://swifter.tips/delegate)
5、在OC中用set方法在Swift中可以用didSet代替
swift的didSet方法6、在Playground显示一个创建的UI。
1)、首先要在代码中导入PlaygroundSupport
2)、在把创建好的UI添加到PlaygroundPage.current.liveView上
在在Playground显示一个创建的UI打开右侧的UI呈现页面有两个方法 1:“Alt + Shift + Command + Return”2:打开Assistant Editor如下图
打开Assistant Editor