1. 補充: 如何獲取一個堆空間對象的地址指針?(多練習(xí),需牢記,拿到指針可以為所欲為)

獲取堆空間對象的地址指針
一、字面量
1. 什么是字面量(Literal)? Swift 自帶的絕大部分類型,都支持直接通過字面量進(jìn)行初始化嗎?

字面量基本介紹
2. 思考:為什么 Swift 中自帶類型能夠通過字面量初始化?
- 因為他們遵守對應(yīng)的協(xié)議

字面量協(xié)議
3. 實踐:如何讓 Int 變量能夠使用字面量 true 來賦值表示 1?
- 讓
Int擴(kuò)展ExpressibleByBooleanLiteral協(xié)議的init方法
extension Int: ExpressibleByBooleanLiteral {
public init(booleanLiteral value: BooleanLiteralType) { self = value ? 1 : 0 }
}
// 原本會報錯的代碼
var num: Int = true
print(num) // 1
4. 實踐:如何使用字面量初始化 Person 對象?
class Person: ExpressibleByIntegerLiteral {
var age = 0
init(age: Int) {
self.age = age
}
required init(integerLiteral value: IntegerLiteralType) {
age = value
}
}
var person:Person = Person(age: 10)
print(person.age) // 10
// 用字面量初始化 Person
var person2:Person = 20
print(person2.age) // 20
二、模式匹配
1. 模式(Pattern)基本介紹

image.png
2. 通配符模式(Wildcard Pattern),包含兩種 _ 和 _? 請問這兩種在模式中有什么不同?
-
_匹配任何值 -
_?匹配非 nil 值
image.png
3. 元組模式(Tuple Pattern)

image.png
4. 枚舉 case 模式(Enumeration Case Pattern)

image.png
- 總結(jié):無論
if case還是for case,把它們想象成witch case來理解,就非常好理解。
5. is 和 as 在類型轉(zhuǎn)換模式(Type-Casting Pattern)的區(qū)別?
- is 一般僅僅用于
判斷類型 - as 用于
判斷類型 + 類型轉(zhuǎn)換

image.png
6. 什么是表達(dá)式模式(Expression Pattern)

image.png
7. 如何自定義表達(dá)式模式?

image.png
8. where 一般在 Swift 中運用,有 5 處,備用知識

image.png
三、OC 到 Swift
1. MARK、TODO、FIXME 用于干什么?

image.png
2. 條件編譯能判斷的一些條件?(了解)

image.png
3. 如何讓網(wǎng)絡(luò)請求在 debug 模式下測試服務(wù)器,在 release 模式下走正式服務(wù)器?
let baseHTTP: String
#if DEBUG
baseHTTP = "http://develop.com"
#else
baseHTTP = "http://product.com"
#endif
print(baseHTTP)
4. 在 Swift 中如何讓 Log 僅僅在 debug 模式下打印,在 release 模式下不打???
func log<T>(_ value: T){
#if DEBUG
print(value)
#endif
}
- 使用
泛型,能打印任何類型 -
print(value)只會在debug模式執(zhí)行 - 在
release模式下log(:)不執(zhí)行任何代碼,會被編譯器優(yōu)化,直接不調(diào)用,所以不影響性能
5. 如何構(gòu)建一個打印方法,僅在 debug 模式打印,并且會打印出①函數(shù)所在文件位置②行數(shù)③方法名?
func log<T>(_ value: T,
file: NSString = #file,
line: Int = #line,
function: String = #function){
#if DEBUG
print("file:\(file.lastPathComponent) line:\(line) function:\(function) log:\(value)")
#endif
}
6. 系統(tǒng)版本檢查。(了解)

image.png
7. API 可用性說明

image.png
