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的主要内容,如果未能解决你的问题,请参考以下文章

Swift3.0 - 黑魔法swizzle

iOS开发中OC和swift的对比

Swift 3 和 Facebook swift SDK

“filename+CoreDataProperties.swift”和“filename.swift”NSmanagedObject 子类有啥用?

swift里nsdictionary和dictionary有啥区别

Swift初见Swift变量和常量