Swift3.0 - 真的很简单
Swift3.0 - 数据类型
Swift3.0 - Array
Swift3.0 - 字典
Swift3.0 - 可选值
Swift3.0 - 集合
Swift3.0 - 流控制
Swift3.0 - 对象和类
Swift3.0 - 属性
Swift3.0 - 函数和闭包
Swift3.0 - 初始化和释放
Swift3.0 - 协议protocol
Swift3.0 - 类和结构体的区别
Swift3.0 - 枚举
Swift3.0 - 扩展
Swift3.0 - 下标
Swift3.0 - 泛型
Swift3.0 - 异常错误
Swift3.0 - 断言
Swift3.0 - 自动引用计数(strong,weak,unowned)
Swift3.0 - 检测API
Swift3.0 - 对象的标识
Swift3.0 - 注释
Swift3.0 - 元类型
Swift3.0 - 空间命名
Swift3.0 - 对象判等
Swift3.0 - 探究Self的用途
Swift3.0 - 类簇
Swift3.0 - 动态调用对象(实例)方法
Swift3.0 - 文本输出
Swift3.0 - 黑魔法swizzle
Swift3.0 - 镜像
Swift3.0 - 遇到的坑
- 为什么要使用空间命名
如果你不想给类名加前缀,然后又想避免出现类名冲突,这个时候,就可以使用它了
代码示例
struct MyClassContrainer1{
class Student {
func getName() -> String {
return "name"
}
}
}
struct MyClassContrainer2{
class Student {
func getName() -> String {
return "name"
}
}
}
let student1 = MyClassContrainer1.Student()
let student2 = MyClassContrainer1.Student()
应用场景1:
我们想通知中心发送一条消息
NotificationCenter.default.post(name: Notification.Name("SocketConnectFailure"), object: ["errorCode":000])
我们注册通知的写法是下面这样的
NotificationCenter.default.addObserver(self, selector: #selector(SocketConnectFailure(notification:)), name: Notification.Name("SocketConnectFailure"), object: nil)
思考: 我们如果能够更加直观的知道SocketConnectFailure 是哪一类消息呢?
命名空间优雅的写法
extension Notification.Name {
/// 使用命名空间的方式
public struct SocketTask {
public static let connectFailure = Notification.Name(rawValue: "SocketConnectFailure")
public static let connectSuccess = Notification.Name(rawValue: "SocketConnectSuccess")
}
}
使用:
// 想通知中心post 消息
NotificationCenter.default.post(name: Notification.Name.SocketTask.connectFailure, object: ["errorCode":000])
// 增加观察者
NotificationCenter.default.addObserver(self, selector: #selector(SocketConnectFailure(notification:)), name: Notification.Name.SocketTask.connectFailure, object: nil)