讀完Swift開(kāi)發(fā)文檔后記錄的小知識(shí)點(diǎn)

最新更新

1锄贼、在 Swift 4.2 里可以使用 CaseIterable 協(xié)議票灰,讓編譯器自動(dòng)為我們創(chuàng)建 allCases:

//這個(gè)allCases的自動(dòng)合成僅替換沒(méi)有參數(shù)的case值, 但是如果需要你需要所有case值, 可以重寫(xiě)allCases屬性自己添加
//如果有枚舉項(xiàng)標(biāo)記為unavailable,則默認(rèn)無(wú)法合成allCases宅荤,只能依靠自己來(lái)手動(dòng)合成
enum LogLevel: CaseIterable {
    case warn
    case info
}

for level in LogLevel.allCases {
    print(level)
}

2屑迂、雖然 Swift 4.2 里最重要的是 ABI 兼容性的提升,但還是實(shí)現(xiàn)了一套隨機(jī)數(shù)的 API:

let randomIntFrom0To10 = Int.random(in: 0 ..< 10)
let randomFloat = Flow.random(in: 0 ..< 1)

let greetings = ["hey", "hi", "hello", "hola"]
print(greetings.randomElement()!)

let randomlyOrderGreetings = greetings.shuffled()
print(randomlyOrderedGreetings)

var numbers = [1, 2, 3, 4, 5, 6]
let shuffledNumbers = numbers.shuffled()
// shuffledNumbers == [6, 1, 3, 2, 5, 4]
// numbers == [1, 2, 3, 4, 5, 6]
numbers.shuffle()
// numbers == [4, 2, 6, 5, 1, 3]

3冯键、Swift 4.2 新增了一個(gè)判斷庫(kù)是否能導(dǎo)入的宏:

#if canImport(UIKit)
    import UIKit
    typealias Color = UIColor
#elseif canImport(AppKit)
    import AppKit
    typealias Color = NSColor
#else
    #error("Unsupported platform")
#endif
// Swift 4.2
//判斷是否為模擬器環(huán)境的代碼:
#if hasTargetEnviroment(simulator)
    ...
#endif

4惹盼、Bool類(lèi)型取反:.toggle()
5、檢查序列元素是否符合條件:

//判斷數(shù)組的所有元素是否全部大于85
let scores = [86, 88, 95, 92]
//返回一個(gè)BOOL
let passed = scores.allSatisfy({ $0 > 85 })
print(passed)
//輸出: true

6惫确、自定義運(yùn)算符
前置運(yùn)算符 prefix
中間運(yùn)算符 infix
后置運(yùn)算符 postfix

以前整理

1手报、where關(guān)鍵字指定額外的要求蚯舱,可以用來(lái)設(shè)置約束條件、限制類(lèi)型
2掩蛤、在方法的func關(guān)鍵字之前加上關(guān)鍵字static或者class都可以用于指定類(lèi)方法.不同的是用class關(guān)鍵字指定的類(lèi)方法可以被子類(lèi)重寫(xiě)枉昏,但是用static關(guān)鍵字指定的類(lèi)方法是不能被子類(lèi)重寫(xiě)的,被static指定的類(lèi)方法包含final(不可更改的)關(guān)鍵字的特性--防止被重寫(xiě).
3揍鸟、deinit屬于析構(gòu)函數(shù)
析構(gòu)函數(shù)(destructor) 與構(gòu)造函數(shù)相反兄裂,當(dāng)對(duì)象結(jié)束其生命周期時(shí)(例如對(duì)象所在的函數(shù)已調(diào)用完畢),系統(tǒng)自動(dòng)執(zhí)行析構(gòu)函數(shù)
和OC中的dealloc 一樣的
4阳藻、Swift中mutating關(guān)鍵字:為了能夠在實(shí)例方法中修改屬性值晰奖,可以在方法定義前添加關(guān)鍵字mutating;值類(lèi)型的實(shí)例方法中腥泥,也可以直接修改self屬性值匾南。
5、代理繼承的父類(lèi)NSObjectProtocol的時(shí)候,判斷代理是否實(shí)現(xiàn)某個(gè)方法responds(to: #selector()能提示處理,繼承自class則沒(méi)法判斷
6道川、let content = (newSrting as NSString).addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
7午衰、打印內(nèi)存地址:
withUnsafePointer(to: &subArr) { p in
print(p)
}
8、數(shù)組中獲取子數(shù)組
let arr = [1,2,3,4,5]
//是個(gè)切片數(shù)組和數(shù)組之間可以轉(zhuǎn)化
let arrSlice = arr[0..<3]
let subArr = Array(arrSlice)

9冒萄、多繼承臊岸,運(yùn)行時(shí)方法
10、Swift 同時(shí)也提供兩個(gè)等價(jià)運(yùn)算符( === 和 !== )尊流,你可以使用它們來(lái)判斷兩個(gè)對(duì)象的引用是否相同帅戒。
11、Swift 標(biāo)準(zhǔn)庫(kù)包含的元組比較運(yùn)算符僅支持小于七個(gè)元素的元組崖技。要比較擁有七個(gè)或者更多元素的元組逻住,你必須自己實(shí)現(xiàn)比較運(yùn)算符。
12迎献、Swift 的 String類(lèi)型橋接到了基礎(chǔ)庫(kù)中的 NSString類(lèi)瞎访。Foundation 同時(shí)也擴(kuò)展了所有 NSString 定義的方法給 String 。也就是說(shuō)吁恍,如果你導(dǎo)入 Foundation 扒秸,就可以在 String 中訪問(wèn)所有的 NSString 方法,無(wú)需轉(zhuǎn)換格式冀瓦。
13伴奥、子字符串并不適合長(zhǎng)期保存——因?yàn)樗鼈冎赜昧嗽址膬?nèi)存,只要這個(gè)字符串有子字符串在使用中翼闽,那么這個(gè)字符串就必須一直保存在內(nèi)存里拾徙。
14、hashValue 的實(shí)質(zhì)
15感局、 ? 使用 intersection(_:)方法來(lái)創(chuàng)建一個(gè)只包含兩個(gè)合集共有值的新合集尼啡;

  • 使用 symmetricDifference(_:)方法來(lái)創(chuàng)建一個(gè)只包含兩個(gè)合集各自有的非共有值的新合集暂衡;
  • 使用 union(_:)方法來(lái)創(chuàng)建一個(gè)包含兩個(gè)合集所有值的新合集;
  • 使用 subtracting(_:)方法來(lái)創(chuàng)建一個(gè)兩個(gè)合集當(dāng)中不包含某個(gè)合集值的新合集玄叠。

16古徒、使用 stride(from:to:by:) 函數(shù)來(lái)跳過(guò)不想要的標(biāo)記。stride(from:through:by:)(閉區(qū)間)
17读恃、continue 語(yǔ)句告訴循環(huán)停止正在做的事情并且再次從頭開(kāi)始循環(huán)的下一次遍歷隧膘。它是說(shuō)“我不再繼續(xù)當(dāng)前的循環(huán)遍歷了”而不是離開(kāi)整個(gè)的循環(huán)。
18寺惫、如果你確實(shí)需要 C 風(fēng)格的貫穿行為疹吃,你可以選擇在每個(gè)情況末尾使用 fallthrough 關(guān)鍵字
19、相對(duì)于使用 if 語(yǔ)句來(lái)做同樣的事情西雀,為需求使用 guard 語(yǔ)句來(lái)提升你代碼的穩(wěn)定性萨驶。它會(huì)讓正常地寫(xiě)代碼而不用把它們包裹進(jìn)else 代碼塊,并且它允許你保留在需求之后處理危險(xiǎn)的需求艇肴。
20腔呜、輸入輸出形式參數(shù):在形式參數(shù)定義開(kāi)始的時(shí)候在前邊添加一個(gè) inout關(guān)鍵字,函數(shù)能夠修改一個(gè)形式參數(shù)的值再悼,而且這些改變?cè)诤瘮?shù)結(jié)束之后依然生效核畴,輸入輸出形式參數(shù)是函數(shù)能影響到函數(shù)范圍外的另一種替代方式。
21冲九、結(jié)構(gòu)體和枚舉是值類(lèi)型谤草,類(lèi)是引用類(lèi)型
22、 public private(set) var area: Double = 0 公開(kāi)屬性 私有set
23莺奸、結(jié)構(gòu)體是值類(lèi)型丑孩。當(dāng)一個(gè)值類(lèi)型的實(shí)例被標(biāo)記為常量時(shí),該實(shí)例的其他屬性也均為常量灭贷。
24温学、你必須把延遲存儲(chǔ)屬性聲明為變量(使用 var 關(guān)鍵字),因?yàn)樗某跏贾悼赡茉趯?shí)例初始化完成之前無(wú)法取得甚疟。常量屬性則必須在初始化完成之前有值仗岖,因此不能聲明為延遲。
25古拴、如果被標(biāo)記為 lazy 修飾符的屬性同時(shí)被多個(gè)線程訪問(wèn)并且屬性還沒(méi)有被初始化箩帚,則無(wú)法保證屬性只初始化一次真友。
26黄痪、你必須用 var 關(guān)鍵字定義計(jì)算屬性——包括只讀計(jì)算屬性——為變量屬性,因?yàn)樗鼈兊闹挡皇枪潭ǖ摹?let 關(guān)鍵字只用于常量屬性盔然,用于明確那些值一旦作為實(shí)例初始化就不能更改桅打。
27是嗜、結(jié)構(gòu)體和枚舉是值類(lèi)型。默認(rèn)情況下挺尾,值類(lèi)型屬性不能被自身的實(shí)例方法修改鹅搪。(可以選擇在 func關(guān)鍵字前放一個(gè) mutating關(guān)鍵字來(lái)改變屬性值)
28、swift正常的方法如果有返回值的話,調(diào)用的時(shí)候必須有一個(gè)接收方,否則的話編譯器會(huì)報(bào)一個(gè)警告,如果在方法前加上 @discardableResult 不處理的時(shí)候就不會(huì)有警告了遭铺±鍪粒或者 : _ =
29、你不能為同一個(gè)屬性同時(shí)提供重寫(xiě)的setter和重寫(xiě)的屬性觀察器
30魂挂、你可以通過(guò)在類(lèi)定義中在 class 關(guān)鍵字前面寫(xiě) final 修飾符( final class )標(biāo)記一整個(gè)類(lèi)為終點(diǎn)甫题。任何想要從終點(diǎn)類(lèi)創(chuàng)建子類(lèi)的行為都會(huì)被報(bào)告一個(gè)編譯時(shí)錯(cuò)誤。
31涂召、你可以通過(guò)標(biāo)記為終點(diǎn)來(lái)阻止一個(gè)方法坠非、屬性或者下標(biāo)腳本被重寫(xiě)。通過(guò)在方法果正、屬性或者下標(biāo)腳本的關(guān)鍵字前寫(xiě) final 修飾符(比如 final var 炎码, final func , final class func 秋泳, final subscript )
32潦闲、convenience:對(duì)現(xiàn)有的類(lèi)增加init方法、通過(guò)extension給原有的People類(lèi)增加init方法(無(wú)法重寫(xiě))轮锥。 ? 子類(lèi)對(duì)象調(diào)用父類(lèi)的convenience的init方法:只要在子類(lèi)中實(shí)現(xiàn)重寫(xiě)了父類(lèi)convenience方法所需要的init方法的話矫钓,我們?cè)谧宇?lèi)中就可以使用父類(lèi)的convenience初始化方法了
33、如果你想要你自己的自定義值類(lèi)型能夠使用默認(rèn)初始化器和成員初始化器初始化舍杜,以及你的自定義初始化器來(lái)初始化新娜,把你的自定義初始化器寫(xiě)在擴(kuò)展里而不是作為值類(lèi)型原始實(shí)的一部分。
34既绩、指定初始化器必須保證在向上委托給父類(lèi)初始化器之前概龄,其所在類(lèi)引入的所有屬性都要初始化完成。
35饲握、指定初始化器必須先向上委托父類(lèi)初始化器私杜,然后才能為繼承的屬性設(shè)置新值。如果不這樣做救欧,指定初始化器賦予的新值將被父類(lèi)中的初始化器所覆蓋衰粹。
36、便捷初始化器必須先委托同類(lèi)中的其它初始化器笆怠,然后再為任意屬性賦新值(包括同類(lèi)里定義的屬性)铝耻。如果沒(méi)這么做,便捷構(gòu)初始化器賦予的新值將被自己類(lèi)中其它指定初始化器所覆蓋。
37瓢捉、在類(lèi)的初始化器前添加 required 修飾符來(lái)表明所有該類(lèi)的子類(lèi)都必須實(shí)現(xiàn)該初始化器:
38频丘、使用 defer語(yǔ)句來(lái)在代碼離開(kāi)當(dāng)前代碼塊前執(zhí)行語(yǔ)句
39、Any類(lèi)型表示了任意類(lèi)型的值泡态,包括可選類(lèi)型搂漠。
40、擴(kuò)展可以向一個(gè)類(lèi)型添加新的方法某弦,但是不能重寫(xiě)已有的方法桐汤。
41、擴(kuò)展可以添加新的計(jì)算屬性靶壮,但是不能添加存儲(chǔ)屬性惊科,也不能向已有的屬性添加屬性觀察者。

42亮钦、如果你使用擴(kuò)展提供了一個(gè)新的初始化器馆截,你仍應(yīng)確保每一個(gè)實(shí)例都在初始化完成時(shí)完全初始化。

43蜂莉、結(jié)構(gòu)體和枚舉是值類(lèi)型蜡娶。默認(rèn)情況下,值類(lèi)型屬性不能被自身的實(shí)例方法修改映穗。你可以選擇在 func關(guān)鍵字前放一個(gè) mutating關(guān)鍵字來(lái)改變(如果你在協(xié)議中標(biāo)記實(shí)例方法需求為 mutating 窖张,在為類(lèi)實(shí)現(xiàn)該方法的時(shí)候不需要寫(xiě) mutating 關(guān)鍵字。 mutating 關(guān)鍵字只在結(jié)構(gòu)體和枚舉類(lèi)型中需要書(shū)寫(xiě)蚁滋。)

44宿接、你可以通過(guò)實(shí)現(xiàn)指定初始化器或便捷初始化器來(lái)使遵循該協(xié)議的類(lèi)滿足協(xié)議的初始化器要求。在這兩種情況下辕录,你都必須使用required 關(guān)鍵字修飾初始化器的實(shí)現(xiàn)睦霎,required 修飾的使用保證了你為協(xié)議初始化器要求提供了一個(gè)明確的繼承實(shí)現(xiàn)。(在類(lèi)的初始化器前添加 required 修飾符來(lái)表明所有該類(lèi)的子類(lèi)都必須實(shí)現(xiàn)該初始化器走诞,在重寫(xiě)父類(lèi)的必要初始化器時(shí)副女,不需要添加 override 修飾符)

45、由于 final 的類(lèi)不會(huì)有子類(lèi)蚣旱,如果協(xié)議初始化器實(shí)現(xiàn)的類(lèi)使用了 final 標(biāo)記碑幅,你就不需要使用 required 來(lái)修飾了。因?yàn)檫@樣的類(lèi)不能被繼承子類(lèi)

46塞绿、如果一個(gè)子類(lèi)重寫(xiě)了父類(lèi)指定的初始化器沟涨,并且遵循協(xié)議實(shí)現(xiàn)了初始化器要求,那么就要為這個(gè)初始化器的實(shí)現(xiàn)添加required 和 override 兩個(gè)修飾符

47异吻、協(xié)議作為參數(shù)的話裹赴,飲用的實(shí)例必須采納 RandomNumberGenerator 協(xié)議

48、注意類(lèi)型不會(huì)因?yàn)闈M足需要就自動(dòng)采納協(xié)議。它們必須顯式地聲明采納了哪個(gè)協(xié)議篮昧。(滿足協(xié)議,也必須顯示的聲明一下extension Hamster: TextRepresentable {})

49笋妥、通過(guò)添加 AnyObject 關(guān)鍵字到協(xié)議的繼承列表懊昨,你就可以限制協(xié)議只能被類(lèi)類(lèi)型采納(并且不是結(jié)構(gòu)體或者枚舉)。

50春宣、協(xié)議組合使用 SomeProtocol & AnotherProtocol 的形式酵颁。你可以列舉任意數(shù)量的協(xié)議,用和符號(hào)連接( & )月帝,使用逗號(hào)分隔。除了協(xié)議列表,協(xié)議組合也能包含類(lèi)類(lèi)型伸辟,這允許你標(biāo)明一個(gè)需要的父類(lèi)痢甘。(celebrator 形式參數(shù)的類(lèi)型是 Named & Aged ,這意味著“任何同時(shí)遵循 Named 和 Aged 的協(xié)議簸搞”馕唬”它不關(guān)心具體是什么樣的類(lèi)型傳入函數(shù),只要它遵循這兩個(gè)要求的協(xié)議即可趁俊。)

51域仇、注意 @objc 協(xié)議只能被繼承自 Objective-C 類(lèi)或其他 @objc 類(lèi)采納。它們不能被結(jié)構(gòu)體或者枚舉采納寺擂。

52暇务、通過(guò)給協(xié)議創(chuàng)建擴(kuò)展,所有的遵循類(lèi)型自動(dòng)獲得這個(gè)方法的實(shí)現(xiàn)而不需要任何額外的修改怔软。

53垦细、你可以使用協(xié)議擴(kuò)展來(lái)給協(xié)議的任意方法或者計(jì)算屬性要求提供默認(rèn)實(shí)現(xiàn)。通過(guò)擴(kuò)展給協(xié)議要求提供默認(rèn)實(shí)現(xiàn)與可選協(xié)議要求的區(qū)別是明確的挡逼。盡管遵循協(xié)議都不需要提供它們自己的實(shí)現(xiàn)蝠检。有默認(rèn)實(shí)現(xiàn)的要求不需要使用可選鏈就能調(diào)用。

54挚瘟、如果遵循類(lèi)型滿足了為相同方法或者屬性提供實(shí)現(xiàn)的多限制擴(kuò)展的要求叹谁,Swift 會(huì)使用最匹配限制的實(shí)現(xiàn)。

55乘盖、你可以在一個(gè)泛型** where 分句中包含多個(gè)要求來(lái)作為擴(kuò)展的一部分焰檩,就如同你在其它地方寫(xiě)的泛型 where **分句一樣。每一個(gè)需求用逗號(hào)分隔订框。

56析苫、解決循環(huán)引用(弱引用和無(wú)主引用)

lazy var someClosure: () -> String = {

[unowned self, weak delegate = self.delegate!] in

*// closure body goes here*

}

57、具體來(lái)說(shuō),如果下面的條件可以滿足就說(shuō)明重疊訪問(wèn)結(jié)構(gòu)體的屬性是安全的:

  • 你只訪問(wèn)實(shí)例的存儲(chǔ)屬性衩侥,不是計(jì)算屬性或者類(lèi)屬性国旷;
  • 結(jié)構(gòu)體是局部變量而非全局變量;
  • 結(jié)構(gòu)體要么沒(méi)有被閉包捕獲要么只被非逃逸閉包捕獲茫死。

如果編譯器不能保證訪問(wèn)是安全的跪但,它就不允許訪問(wèn)。

58峦萎、如果你使用@testable 屬性標(biāo)注了導(dǎo)入的生產(chǎn)模塊并且用使能測(cè)試的方式編譯了這個(gè)模塊屡久,單元測(cè)試目標(biāo)就能訪問(wèn)任何 internal 的實(shí)體。

59爱榔、接下來(lái)的關(guān)鍵字被預(yù)留被环,不能被用作標(biāo)識(shí)符,除非它們像上一節(jié)標(biāo)識(shí)符中描述的那樣使用反引號(hào)( ` )详幽。

  • 用在聲明中的關(guān)鍵字: associatedtype 筛欢、 class 、 deinit 唇聘、 enum 悴能、 extension 、 func 雳灾、 import 漠酿、 init 、inout 谎亩、 internal 炒嘲、 let 、 operator 匈庭、 private 夫凸、 protocol 、 public 阱持、 static 夭拌、 struct 、 subscript 衷咽、typealias 和 var 鸽扁。
  • 用在語(yǔ)句中的關(guān)鍵字: break 、 case 镶骗、 continue 桶现、 default 、 defer 鼎姊、 do 骡和、 else 相赁、 fallthrough 、 for 慰于、guard 钮科、 if 、 in 婆赠、 repeat 绵脯、 return 、 switch 页藻、 where 和 while 。
  • 用在表達(dá)式和類(lèi)型中的關(guān)鍵字: as 植兰、 catch 份帐、 dynamicType 、 false 楣导、 is 废境、 nil , rethrows 、 super 筒繁、 self 噩凹、Self 、 throw 毡咏、 throws 驮宴、 true 和 try 。
  • 用在模式中的關(guān)鍵字: _ 呕缭。
  • 起始于數(shù)字標(biāo)記( # )的關(guān)鍵字: #available 堵泽、 #column 、 #else 恢总、 #elseif 迎罗、 #endif 、 #file 片仿、 #function 纹安、#if 、 #line 砂豌、 #selector 和 #sourceLocation 厢岂。
  • 特定上下文中被保留的關(guān)鍵字: associativity 、 convenience 阳距、 dynamic 咪笑、 didSet 、 final 娄涩、 get 窗怒、 infix 映跟、indirect 、 lazy 扬虚、 left 努隙、 mutating 、 none 辜昵、 nonmutating 荸镊、 optional 、 override 堪置、 postfix 躬存、precedence 、 prefix 舀锨、 Protocol 岭洲、 required 、 right 坎匿、 set 盾剩、 Type 、 unowned 替蔬、 weak 和 willSet 告私。這些關(guān)鍵字在特定上下文語(yǔ)法之外可以被用于標(biāo)識(shí)符。

以下標(biāo)記被當(dāng)作保留符號(hào)承桥,不能用于自定義操作符: ( 驻粟、 ) 、 { 凶异、 } 格嗅、 [ 、 ] 唠帝、 . 屯掖、 , 、 : 襟衰、 ; 贴铜、 = 、 @ 瀑晒、 # 绍坝、 & (作為前綴操作符)、 -> 苔悦、` 轩褐、 ? 和 ! (作為后綴操作符)。

60玖详、觀察者:KVO 是一個(gè)純 OC 的特性把介,所以如果是 swift class 需要在聲明的時(shí)候增加 @objcMembers 關(guān)鍵字勤讽。否則在運(yùn)行的時(shí)候你會(huì)得到一個(gè) error。另外一件事就是被觀察的屬性需要用dynamic修飾拗踢,否則也無(wú)法觀察到脚牍。一個(gè)好消息是不需要在對(duì)象被回收時(shí)手動(dòng) remove observer。但是這也帶來(lái)了另外一個(gè)容易被忽略的事情:觀察的閉包沒(méi)有被強(qiáng)引用巢墅,需要我們自己添加引用诸狭,否則當(dāng)前函數(shù)離開(kāi)后這個(gè)觀察閉包就會(huì)被回收了。

61君纫、一個(gè)繼承 NSObject 的 swift 類(lèi)不再默認(rèn)給所有函數(shù)添加 @objc驯遇。只在實(shí)現(xiàn) OC 接口和重寫(xiě) OC 方法時(shí)才自動(dòng)給函數(shù)添加 @objc 標(biāo)識(shí)。

62蓄髓、在 4.2 中蘋(píng)果終于響應(yīng)了這個(gè)要求叉庐!現(xiàn)在 otional bindingself 不再作為保留關(guān)鍵字。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末双吆,一起剝皮案震驚了整個(gè)濱河市眨唬,隨后出現(xiàn)的幾起案子会前,更是在濱河造成了極大的恐慌好乐,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓦宜,死亡現(xiàn)場(chǎng)離奇詭異蔚万,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)临庇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)反璃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人假夺,你說(shuō)我怎么就攤上這事淮蜈。” “怎么了已卷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵梧田,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我侧蘸,道長(zhǎng)裁眯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任讳癌,我火速辦了婚禮穿稳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘晌坤。我一直安慰自己逢艘,他們只是感情好旦袋,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著埋虹,像睡著了一般猜憎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搔课,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天胰柑,我揣著相機(jī)與錄音,去河邊找鬼爬泥。 笑死柬讨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的袍啡。 我是一名探鬼主播踩官,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼境输!你這毒婦竟也來(lái)了蔗牡?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嗅剖,失蹤者是張志新(化名)和其女友劉穎辩越,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體信粮,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡黔攒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了强缘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片督惰。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖旅掂,靈堂內(nèi)的尸體忽然破棺而出赏胚,到底是詐尸還是另有隱情,我是刑警寧澤商虐,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布觉阅,位于F島的核電站,受9級(jí)特大地震影響称龙,放射性物質(zhì)發(fā)生泄漏留拾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一鲫尊、第九天 我趴在偏房一處隱蔽的房頂上張望痴柔。 院中可真熱鬧,春花似錦疫向、人聲如沸咳蔚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谈火。三九已至侈询,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間糯耍,已是汗流浹背扔字。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留温技,地道東北人革为。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像舵鳞,于是被迫代替她去往敵國(guó)和親震檩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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