Swift和SwiftUI
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift和SwiftUI相关的知识,希望对你有一定的参考价值。
参考技术A 1.Swift相对与OC一些更好用的特性(1)更好用的switch...case,for循环,枚举,结构体
a. switch...case
不需要break,一个case可以写多个条件,使用fallthrough继续执行
基本数据类型都能判断,并且能使用where语句
b. for循环
普通for循环
集合类型的遍历
c 枚举
d 结构体
结构体在Swift中的地位很重要,Array Dictionary Set Int Float Double Bool String都是结构体
(2)String与NSString
(3)函数
(4)可选项,安全的语言
(5)各种各样的基类
NSObject(OC中所有的类都是继承NSObject) < AnyObject(Swift中的类可以不继承任何类) < Any(包含了函数的类型)
(6)基本数据类型都是值类型,copy - on - write
2.Swift的动态性
(0)大纲
a 纯Swift的类和继承自NSObject的类通过runtimeAPI获取方法属性
b @objc之后可以被runtimeAPI获取到,但是方法无法被替换
c dynamic后方法动态调用,可以被替换
d Swift和OC相互调用,Swift在OC类中的名字
e Swift使用关联对象
f Swift5.0方法交换,动态访问属性(动态传递参数,动态调用方法)
(1)使用runtime API与Swift
a. @objc本意是让OC可以调用Swift的方法,@objc所修饰的属性,方法不能包含Swift特有的类
b. @objc 信息能使用runtime获取,dynamic动态调用
c. 如果类继承自Object-c的类会自动被编译器插入@objc标识
a .纯 Swift 类没有动态性,但在方法、属性前添加 dynamic 修饰可以获得动态性。
b .继承自 NSObject 的 Swift 类,其继承自父类的方法具有动态性,其他自定义方法、属性需要加 dynamic 修饰才可以获得动态性。
c .若方法的参数、属性类型为 Swift 特有、无法映射到 Objective-C 的类型 (如 Character、Tuple),则此方法、属性无法添加 dynamic 修饰(会编译错误)
d .Swift 类在 Objective-C 中会有模块前缀
e .仍然可以使用关联对象技术
(2)Swift5的“Method Swizzling”
以上是关于Swift和SwiftUI的主要内容,如果未能解决你的问题,请参考以下文章
“filename+CoreDataProperties.swift”和“filename.swift”NSmanagedObject 子类有啥用?