小知識點

關(guān)鍵字說明

@discardableResult
默認情況下編譯器就是會去檢查返回參數(shù)是否有被使用,沒有的話就會給出警告。如果你不想要這個警告,可以自己手動加上 @discardableResult

associatedtype
swift中protocol不能使用<T>這種泛型,但是提供了associatedtype關(guān)鍵字來支持泛型


static與class的區(qū)別

被class修飾的類型方法疯兼,下標,允許被子類重寫
被static修飾的類型方法贫途,下標吧彪,不允許被子類重寫


for-區(qū)間運算符用在數(shù)組上

let names = ["aaa","bbb", "ccc", "ddd"]
for name in names[0...3] {
    print(name)
}
  • 單側(cè)區(qū)間:讓區(qū)間朝一個方向盡可能遠
for name in names[2...] {
    print(name)
}

for name in names[...2] {
    print(name)
}

for name in names[..<2] {
    print(name)
}
let range1 = ...5
range1.contains(7)//false
range1.contains(4)//true
range1.contains(-3)//true

區(qū)間類型

let range1: ClosedRange<Int> = 1...3
let range2: Range<Int> = 1..<3
let range3: PartialRangeThrough<Int> = ...5
  • 字符、字符串也能使用區(qū)間字符串潮饱,但默認不能用在for-in中
let stringRange1 = "cc"..."ff"
stringRange1.contains("cb")
stringRange1.contains("dz")
stringRange1.contains("fg")

let stringRange2 = "a"..."f"
stringRange2.contains("d")
stringRange2.contains("h")

從\0到~囊括了所有可能要用到的ASCII字符

let characterRange: ClosedRange<Character> = "\0"..."~"
characterRange.contains("G")

帶間隔的區(qū)間值

let hours = 11
let hourInterval = 2
// tickMark的取值: 從4開始来氧,累加2,不超過11
for tickMark in stride(from: 4, through: hours, by: hourInterval) {
    print(tickMark)
} //4 6 8 10

fallthrough

  • 使用fallthrough可以實現(xiàn)貫串效果
var number = 1
switch number {
case 1:
    print("number is 1")
    fallthrough
case 2:
    print("number is 2")
    
default:
    print("number is other")
    
}
//number is 1
//number is 2

標簽語句

你可以在循環(huán)語句或 switch 語句前面加上標簽香拉,它由標簽名和緊隨其后的冒號(:)組成啦扬。在 break 和 continue 后面跟上標簽名可以顯式地在循環(huán)語句或 switch 語句中改變相應(yīng)的控制流。

outer: for i in 1...4 {
    for k in 1...4 {
        if k == 3 {
            continue outer
        }
        
        if i == 3 {
            break outer
        }
        print("i == \(i), k == \(k)")
    }
}

Swift自帶的Print打印函數(shù)

public func print(_ items: Any..., separator: String = " ", terminator: String = "\n")
print(1,2,3,4) // 1 2 3 4
print(1,2,3,4, separator: "_") // 1_2_3_4

typealias

用來給類型起別名

typealias Byte = Int8
typealias Short = Int16
typealias Long = Int64
typealias Date = (year: Int, month: Int, day: Int)
func test(_ date: Date) {
    print(date.0)
    print(date.year)
}
test((2020, 10, 9))
typealias IntFn = (Int, Int) -> Int

func difference(v1: Int, v2: Int) -> Int {
    v1 - v2
}

let fn: IntFn = difference
fn(10, 20)

func setFn(_ fn: IntFn) {}
setFn(difference)

func getFn() -> IntFn {
    difference
}
  • 按照Swift的標準庫的定義凫碌,Void就是空元組()
public typealias Void = ()

延遲執(zhí)行dispatch_after

OC

__weak typeof(self) weakSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^ {
    __strong typeof(self) pThis = weakSelf;
});


swift

DispatchQueue.main.asyncAfter(deadline: .now()+0.5, execute: {
    
})

變量名與關(guān)鍵字沖突

可以使用('')包裹住變量名扑毡,這樣就可以用了

/// Shared singleton instance used by all `AF.request` APIs. Cannot be modified.
public static let `default` = Session()

檢測API可用性

if #available(iOS 10, macOS 10.12, *) {
    // 在 iOS 使用 iOS 10 的 API, 在 macOS 使用 macOS 10.12 的 API
} else {
    // 使用先前版本的 iOS 和 macOS 的 API
}
if #available(平臺名稱 版本號, ..., *) {
    APIs 可用,語句將執(zhí)行
} else {
    APIs 不可用盛险,語句將不執(zhí)行
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瞄摊,一起剝皮案震驚了整個濱河市勋又,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌换帜,老刑警劉巖楔壤,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異惯驼,居然都是意外死亡蹲嚣,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門祟牲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隙畜,“玉大人,你說我怎么就攤上這事说贝∫槎瑁” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵乡恕,是天一觀的道長言询。 經(jīng)常有香客問我,道長傲宜,這世上最難降的妖魔是什么倍试? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蛋哭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘涮母。我一直安慰自己谆趾,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布叛本。 她就那樣靜靜地躺著沪蓬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪来候。 梳的紋絲不亂的頭發(fā)上跷叉,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音营搅,去河邊找鬼云挟。 笑死,一個胖子當著我的面吹牛转质,可吹牛的內(nèi)容都是我干的园欣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼休蟹,長吁一口氣:“原來是場噩夢啊……” “哼沸枯!你這毒婦竟也來了日矫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤绑榴,失蹤者是張志新(化名)和其女友劉穎哪轿,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翔怎,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡窃诉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了姓惑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褐奴。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖于毙,靈堂內(nèi)的尸體忽然破棺而出敦冬,到底是詐尸還是另有隱情,我是刑警寧澤唯沮,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布脖旱,位于F島的核電站,受9級特大地震影響介蛉,放射性物質(zhì)發(fā)生泄漏萌庆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一币旧、第九天 我趴在偏房一處隱蔽的房頂上張望践险。 院中可真熱鬧,春花似錦吹菱、人聲如沸巍虫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽占遥。三九已至,卻和暖如春输瓜,著一層夾襖步出監(jiān)牢的瞬間瓦胎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工尤揣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留搔啊,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓北戏,卻偏偏與公主長得像坯癣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子最欠,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容