1.在Swift工程中引入动态库,需要添加到Embedded Binaries
中,否则会报错;
2.调用有返回值的函数时如果不使用返回值,编译器会发出警告。在该函数前面加上@discardableResult
关键字可以消除该警告;
3.Swift 4.0 使用KVC字典转模型时候需要加上@objcMembers
关键字才可以有效;
4.在Swift开发中,优先使用let定义常量,如果需要修改再使用变量;
5.枚举中的Int类型可以自动赋值数字,其他类型不可以;
6.类中定义类方法用class
修饰,协议中定义类方法用static
修饰;
7.Swift中单例的写法:
static let shareInstance : NetworkTools = NetworkTools()
8.关于Swift访问权限
- internal 内部的:默认情况下所有的类、属性、方法的访问权限都是internal,在本模块(项目、包、target)中可以访问
- private 私有的:只有在本类中可以访问
- open 公开的:可以跨模块(项目、包、target)都是可以访问的
-
fileprivate:
Swift 3.0
才有的,只有在本文件中可以访问
9.Swift中字符串的优点:
- String 是一个结构体,性能更高,NSString 是一个OC对象,性能略差
- String 支持直接遍历
- 可以进行 String 和 NSString 之间的无缝转换
- 字符串长拼接可以直接相加
10.Swift中类的注意点:
- 定义类中初始化时必须要给属性赋值,而结构体不用
- 一般不用传参数的函数可以写成计算属性来使用
- 在类中可以直接写属性名字调用,不用写
self.
- 定义类属性加上关键字
static
即可,并且类属性只能通过类来调用 - 进行属性监听的函数:
willSet { // 监听属性即将发生改变:还没有改变
print("\(newValue)--\(name)") // 打印新的值
}
didSet { // 监听属性已经发生改变:已经改变
print("\(oldValue)--\(name)") // 打印旧值
}
- Swift中析构函数相当于OC中的
delloc
方法:
deinit {
print("该类被释放")
}
11.Swift中协议的注意点:
- 协议中的方法默认都是必须实现的,加上
@objc optional
表示方法是可以不实现的 - 加上
class
说明只能被类使用该协议:
@objc protocol sprotProtocol : class {
@objc optional func playFootball()
}
- 继承可以和协议一起写在 : 后面:
class smallStudent: NSObject, sprotProtocol {
}
12.在extension中给系统的类扩充构造函数,只能扩充便利构造函数
extension UIColor {
convenience init(r: CGFloat, g: CGFloat, b: CGFloat, alpha: CGFloat = 1.0) {
self.init(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: alpha)
}
}
13.OC和Swift混编的方法:
- 在Swift中引用OC的文件,会默认生成一个
工程名-Bridging-Header.h
的桥接文件,在其中用OC语法引用需要的类就可以了。 - 也可以自定义一个
.h
文件,并添加到该路径中Build Settings -> Swift Compiler -> Objective-C Bridging Header
。 - 在OC中引用Swift的文件,只需要引入
工程名-Swift.h
的头文件,就可以使用了。 - 该头文件的路径可以在
Build Settings -> Swift Compiler -> Objective-C Generated Interface Header Name
中查看。
14.关于Swift中使用CoreFoundation 数据类型:
使用了"类型重映射"机制, 转换成为了能够自动管理内存的对象, 不需要我们手动释放
网友评论