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 - 遇到的坑
- 认识AnyClass
typealias AnyClass = AnyObject.Type
所有类都隐士实现的协议
当你在一个或者类中使用@obj 创建类方法或者属性时,会被系统知道,认为它是AnyClass 的方法
我们看一个例子
class Student{
@objc static let describe = "这是个学生类"
@objc class func getDefaultValue() -> Int {
return 0
}
}
// 定义两个方法
func getDefaultValue(_ c: AnyClass) -> Int? {
return c.getDefaultValue?()
}
func getDescribeValue(_ c: AnyClass) -> String? {
return c.describe
}
接下来我们调用一下
print(getDefaultValue(Student.self))
print(getDescribeValue(Student.self))
运行结果:
Optional(0)
Optional("这是个学生类")
我们来继续
print(getDefaultValue(NSString.self))
print(getDescribeValue(NSString.self))
运行结果:
nil
nil
- 类的类型
a.获取类的类型
class Student {
required init(){
}
}
// 定义类的类型变量
let StudentType: Student.Type = Student.self
// AnyClass 可以接受任何类的类型
let type: AnyClass = Student.self
b.同过类的类型初始化对象
let stu = StudentType.init()
注意:
通过这种方式初始化对象的时候,必须有required 修饰的初始化方法才行
- 对类的类型做类型检测
protocol TeacherDelegate {
}
class Teacher:TeacherDelegate{
}
let teacherType = Teacher.self
func isStudentDelegate(_ type:AnyClass)->Bool{
if type is TeacherDelegate.Type{
return true
}
return false
}
print(isStudentDelegate(teacherType))