程序調(diào)試 (四) —— Xcode內(nèi)存管理(一)

版本記錄

版本號 時間
V1.0 2021.03.24 星期三

前言

程序總會有bug蝇恶,如果有好的調(diào)試技巧和方法镣典,那么就是事半功倍膳叨,這個專題專門和大家分享下和調(diào)試相關(guān)的技巧婶溯。希望可以幫助到大家间景。感興趣的可以看下面幾篇文章佃声。
1. 程序調(diào)試 (一) —— App Crash的調(diào)試和解決示例(一)
2. 程序調(diào)試 (二) —— Xcode Simulator的高級功能(一)
3. 程序調(diào)試 (三) —— Xcode Simulator的高級功能(二)

開始

首先我們看下寫作內(nèi)容:

了解如何釋放Xcode在緩存,derived data倘要,archivessimulators中占用的空間圾亏。內(nèi)容來自翻譯

下面就是寫作環(huán)境了

Swift 5, iOS 14, Xcode 12

接著就是正文啦

Xcode不僅僅是普通的舊文本編輯器封拧。 還是功能完善的集成開發(fā)環(huán)境(Integrated Development Environment (IDE))志鹃。

使用IDE進行iOS開發(fā)具有許多好處。 Xcode使構(gòu)建項目泽西,調(diào)試項目和對最終應(yīng)用程序進行代碼簽名變得容易曹铃。

但是,IDE提供的所有功能都會占用Mac存儲空間尝苇。 全新安裝的Xcode在Mac上需要11 GB铛只。 但是那11 GB只是冰山一角。 盡管具有良好的品質(zhì)糠溜,Xcode還是臭名昭著的存儲豬。

隨著時間的推移直撤,Xcode的存儲容量在考慮其一些工具和目錄時會膨脹:

  • Derived data
  • Caches
  • Old archives
  • Unavailable simulators
  • Device support files

更糟糕的是非竿,這些保存的數(shù)據(jù)不僅會吞噬Mac的寶貴存儲空間。它也可能是奇怪的bug和編譯問題的來源谋竖。

如果在構(gòu)建應(yīng)用程序時看到奇怪的行為红柱,則清除諸如derived data and caches之類的文件夾可以幫助恢復(fù)正常狀態(tài)。甚至Xcode有時也需要進行大清除蓖乘。

注意:在Mac上刪除Xcode的數(shù)據(jù)時锤悄,請務(wù)必小心。除非您確定Xcode可以正常使用嘉抒,否則請勿刪除任何內(nèi)容零聚。本教程將為您提供何時以及為何刪除Xcode支持文件的專業(yè)知識。

在本教程中些侍,您將詳細了解每個目錄的用途以及為什么要清除它隶症。

了解每個目錄的作用后,您將編寫一個腳本來幫助使Mac保持最佳狀態(tài)岗宣。

因此蚂会,準備收回一些久違的Mac存儲!

首先耗式,在Xcode中打開starter項目胁住。 確保選擇一個模擬器作為構(gòu)建target趁猴,然后進行構(gòu)建和運行。

通過使用NASAAstronomy Picture of the Day API彪见,Stellar Space可以顯示NASA拍攝的圖像躲叼,供用戶選擇并保存到其設(shè)備中。

保存到iOS模擬器的圖像會使用Mac上的存儲空間企巢。 清除存儲空間是您在本教程中將學(xué)習(xí)的內(nèi)容之一枫慷。

之前,當您構(gòu)建Stellar Space時浪规,Xcode保存了一些緩存并構(gòu)建了文件或听。 接下來,將其清除笋婿。


Clearing Derived Data

當您構(gòu)建項目時誉裆,Xcode會在derived data中存儲該項目的構(gòu)建文件。 您將在macOS用戶庫中找到派生數(shù)據(jù)文件夾(derived data folder)缸濒。

要查找您的派生數(shù)據(jù)文件夾足丢,請打開一個新的Finder窗口。 在Finder菜單欄中庇配,選擇Go ? Go to Folder…斩跌。

在這里,鍵入您的派生數(shù)據(jù)文件夾的位置:

~/Library/Developer/Xcode/DerivedData

點擊GoFinder窗口的路徑更改為DerivedData捞慌。

您的派生數(shù)據(jù)包含ModuleCache.noindex文件夾以及您在Xcode中構(gòu)建的任何項目的文件夾耀鸦,例如Stellar Space

ModuleCache.index存儲Xcode之前編譯的模塊啸澡。 Xcode在項目和構(gòu)建之間共享這些緩存的模塊袖订,以縮短構(gòu)建時間。

同樣嗅虏,單個項目文件夾也可以縮短構(gòu)建時間洛姑。在Stellar Space文件夾中,您會找到Xcode上次構(gòu)建Stellar Space時生成的支持文件皮服。

1. When to Delete Derived Data

DerivedData中的所有內(nèi)容都可以安全刪除楞艾。實際上,清除派生數(shù)據(jù)是解決iOS開發(fā)人員討厭的編譯問題的常見技巧冰更。

盡管刪除派生數(shù)據(jù)是安全的产徊,但是Xcode從頭開始構(gòu)建項目時,下次構(gòu)建將花費更長的時間蜀细。

2. Deleting Derived Data

清除派生數(shù)據(jù)就像從Finder中刪除整個文件夾一樣簡單舟铜。接下來,如果您要保留構(gòu)建時間特別長的其他任何應(yīng)用程序的數(shù)據(jù)奠衔,則僅刪除Stellar Space文件夾谆刨。

Finder窗口中塘娶,查找Stellar Space的派生數(shù)據(jù)。

我的被命名為Stellar_Space-gmjdilbusvnhawfcpcbkkdqfsiuv痊夭,但是您的會有所不同刁岸。

右鍵單擊Stellar_Space文件夾,然后選擇Move to Trash將其刪除她我。

注意:根據(jù)Mac上的語言設(shè)置虹曙,菜單選項可能顯示Move to Bin或其他一些本地化的選項。

這樣番舆,您就清除了Stellar Space的派生數(shù)據(jù)酝碳。 切記:要刪除所有派生數(shù)據(jù),您需要刪除整個DerivedData文件夾恨狈。

這將清除您構(gòu)建的Stellar Spacedebug版本疏哗。 但是archived release版本存儲在其他位置。


Clearing Archives

每當您archive要在TestFlightApp Storedistribution的應(yīng)用程序時,該archive都將本地存儲在Mac上。 您可能有多年的archive等待清理粗合。

在本部分中,您將archive Stellar Space芽偏,然后從Mac中刪除該存檔,以節(jié)省寶貴的存儲空間牲证。 但是首先哮针,您需要準備Stellar Space進行代碼簽名。

1. Archiving Stellar Space

Xcode中坦袍,請按照以下步驟操作,以獲取Stellar SpaceSigning and Capabilities設(shè)置:

  • 1) 在項目導(dǎo)航器中等太,選擇Stellar Space捂齐。
  • 2) 在Targets下選擇Stellar Space
  • 3) 選擇Signing & Capabilities選項卡缩抡。

當前奠宜,用于archive Stellar SpaceTeam設(shè)置為None。 將Team的值更改為您自己的Apple Developer帳戶的值瞻想。

注意:如果您沒有Apple Developer帳戶压真,可以在這里使用,請不要擔心蘑险。 您可以在不archiving Stellar Space的情況下繼續(xù)閱讀滴肿。

在為模擬器構(gòu)建應(yīng)用時,您無法archive應(yīng)用佃迄,因此請將運行run目標更改為Any iOS Device (arm64)

現(xiàn)在泼差,您就可以archive該應(yīng)用了贵少。 在Xcode的菜單欄中,選擇Product ? Archive堆缘。

如果出現(xiàn)提示滔灶,請輸入您的macOS用戶的密碼:

Xcode構(gòu)建完成后,Archives窗口將打開并顯示結(jié)果吼肥。

Xcode創(chuàng)建了您的archive录平。 實際的.xcarchive文件夾位于Mac上的?/ Library / Developer / Xcode / Archives中。

2. Clearing the Archived Build

要打開archives文件夾缀皱,請打開Finder窗口斗这。 在Finder菜單欄中,單擊Go ? Go to Folder…唆鸡,然后輸入archives文件夾的路徑:

點擊Go

每個archive都存儲在一個子文件夾中涝影,該子文件夾以創(chuàng)建日期的日期命名。 打開今天的文件夾争占,查看您之前創(chuàng)建的Stellar Space archive燃逻。

右鍵單擊.xcarchive,然后選擇Move to Trash臂痕。

您已刪除archive伯襟,節(jié)省了少量的磁盤空間。但是握童,archive文件夾中可能有千兆字節(jié)的.xcarchives姆怪。什么時候可以安全清除它們?

3. When to Clear Archives

derived data不同澡绩,archives不會影響您的未來構(gòu)建稽揭。它們是構(gòu)建應(yīng)用程序的最終產(chǎn)品,因此不會以任何方式加快編譯速度肥卡。但這并不意味著只要空間不足溪掀,就可以清除archives文件夾。

有時步鉴,保存舊archives可能是一個好主意揪胃。如果您需要重新發(fā)布舊的archives文件,則需要存儲在archives文件夾中的.xcarchive氛琢。

另外喊递,調(diào)試應(yīng)用的指定版本需要將archive文件中打包的一個稱為dSYM的文件。

因此阳似,一個很好的建議是不要刪除當前正在運行的應(yīng)用程序版本的任何archive骚勘,也不要刪除以后可能要使用的舊archive

在將您的應(yīng)用archiveXcode中之前障般,您可能會在模擬器上運行它以測試您的應(yīng)用调鲸。接下來盛杰,您將學(xué)習(xí)如何清除這些模擬器并刪除舊數(shù)據(jù)。


Clearing Simulators

在其中一個模擬器上安裝Stellar Space時藐石,它將占用您計算機上的一些空間即供。 Stellar Space還可以將圖像保存到模擬器的照片庫中,從而占用更多空間于微。

有時逗嫡,您可能還想像新用戶一樣測試應(yīng)用程序。這意味著從全新的模擬器開始株依。因此驱证,清除這些模擬器可以幫助使Mac保持最佳狀態(tài)。

1. Storing Simulator Data

在清除模擬器之前恋腕,您需要運行Stellar Space抹锄,以便清除某些內(nèi)容。

Xcode中荠藤,確保將運行目標設(shè)置為您的模擬器之一:

構(gòu)建并運行Stellar Space

難道不是每個人都喜歡令人敬畏的宇宙圖像嗎伙单? 繼續(xù)并點擊Save,將今天的圖像保存到模擬器的Photos中哈肖。

iOS提示您授予訪問照片的權(quán)限時吻育,點按OK

點按Back可以查看昨天的當天照片淤井,并可以隨意探索更多內(nèi)容布疼。 通過點擊Save來保存您喜歡的照片。

完成后币狠,從模擬器底部向上滑動以進入主屏幕游两。 或者,您也可以選擇Device ? Home或按鍵盤上的Command-Shift-H漩绵。

接下來器罐,打開Photos。 您可能需要滑動到其他Home tab才能找到Photos圖標渐行。

在這里,您會看到保存在模擬器上的所有圖像铸董。

iPhone上刪除應(yīng)用程序并不會刪除該應(yīng)用程序可能已存儲在其他位置的所有數(shù)據(jù)祟印,例如文件,照片或Core Data數(shù)據(jù)庫粟害。 為此蕴忆,您需要刪除模擬器的內(nèi)容。

注意:如果您不喜歡在模擬器上清除數(shù)據(jù)悲幅,請隨時跳過下一部分的說明套鹅,繼續(xù)閱讀站蝠!

2. Erasing Simulator Content

擦除模擬器會將其還原為出廠內(nèi)容和設(shè)置,并刪除存儲在其上的所有應(yīng)用程序或數(shù)據(jù)卓鹿。

打開模擬器后菱魔,在菜單欄中單擊Device ? Erase All Content and Settings…

如果您準備丟失該模擬器上的數(shù)據(jù)吟孙,請單擊Erase澜倦。

等待模擬器重啟。 完成后杰妓,再次打開Photos藻治。

您可以在任何模擬器上找到默認照片,隨時可以重新開始測試巷挥!

擦除模擬器內(nèi)容有助于清潔您可以訪問的模擬器桩卵。 但是您可能會失去甚至看不到的模擬器的大量存儲空間。

3. Deleting Unavailable Simulators

如果您一段時間以來一直在開發(fā)iOS應(yīng)用倍宾,那么您可能已經(jīng)經(jīng)歷了幾個模擬器的周期雏节。

Apple發(fā)行新的iPhone時,通常會附帶新版本的XcodeiOS凿宾。 這些新的iPhone需要自己的模擬器矾屯,而較舊的模擬器已過時。 如果您有舊的無法使用的模擬器初厚,則它們可能正在Mac上使用存儲件蚕。

要一次清除所有不可用的模擬器,需要執(zhí)行終端命令产禾。

打開Terminal.app排作。 然后,輸入以下命令:

xcrun simctl delete unavailable

Enter

如果沒有可用的模擬器亚情,則會顯示一條輸出妄痪,告訴您已清除的內(nèi)容。 如果輸出為空白(如上一個屏幕截圖所示)楞件,則說明您在定期刪除舊模擬器方面做得很好衫生。

與不可用的模擬器一樣,您的Mac也存儲了舊iOS版本的支持文件土浸。 使用時罪针,您可以清除所有不再需要的支持文件,以騰出一些空間黄伊。


Device Support

當您將物理設(shè)備連接到Mac以安裝或調(diào)試其中一個應(yīng)用程序時泪酱,Xcode會創(chuàng)建device support文件。 Xcode使用這些文件來支持開發(fā)人員功能,例如查看崩潰日志墓阀。

設(shè)備支持device support文件特定于每個iOS版本毡惜,甚至是次要版本。 因此斯撮,如果您經(jīng)常構(gòu)建設(shè)備经伙,則可能具有適用于iOS 14.1、14.2吮成、14.2.1等的支持文件橱乱。

Xcode永遠不會為您刪除這些文件,因此它們會隨著時間的流逝逐漸建立粱甫。 幸運的是泳叠,自己刪除它們沒有任何危害。 每當您使用物理設(shè)備時茶宵,Xcode都會自動安裝設(shè)備支持文件危纫。

1. Finding Device Support Files

要查找您的iOS設(shè)備支持文件,請打開一個新的Finder窗口乌庶。 在Finder菜單欄中种蝶,選擇Go ? Go to Folder…,然后輸入以下路徑:

~/Library/Developer/Xcode/iOS DeviceSupport

點擊Go

這些支持文件在Mac上的使用量高達11 GB瞒大,這是進行清理的主要選擇螃征。一個很好的建議是刪除iOS DeviceSupport文件夾中除最新的兩個iOS版本外的所有版本,因為您可能仍會支持這些版本透敌。

該文件夾僅用于iOS設(shè)備支持盯滚,但是watchOStvOS遵循類似的模式。

2. Other Platforms

iOS文件一樣酗电,您可以在?/ Library / Developer / Xcode / watchOS DeviceSupport中找到watchOS支持文件魄藕。 XcodetvOS設(shè)備支持文件存儲在?/ Library / Developer / Xcode / tvOS DeviceSupport中。

如果您尚未出于開發(fā)目的將Apple Watch連接到Mac撵术,則將沒有watchOS DeviceSupport文件夾背率。同樣適用于iOStvOS


Caches

尋找空間節(jié)省的最后一個地方是各種緩存嫩与。

緩存存儲數(shù)據(jù)寝姿,因此使用緩存的程序可以運行得更快,而無需重新計算緩存中的數(shù)據(jù)划滋。

緩存始終是瞬態(tài)的会油,這意味著緩存中包含的數(shù)據(jù)是臨時的。刪除緩存的數(shù)據(jù)不會產(chǎn)生不利影響古毛,因為創(chuàng)建緩存的程序可以隨時重新生成它。但是對于較大的緩存,重建緩存時可能會遇到延遲稻薇。

刪除緩存是回收空間的常用策略嫂冻。例如,當刪除Xcode的緩存時塞椎,所有未使用的舊數(shù)據(jù)將保持刪除狀態(tài)桨仿。 Xcode可以在以后重新生成它仍然需要的任何東西。

如果您在使用Xcode或其相關(guān)工具之一時遇到問題案狠,清除緩存也可以幫助解決此問題服傍。

大多數(shù)緩存都存儲在?/ Library / Caches中,包括Xcode緩存骂铁。您可以在?/ Library / Caches / com.apple.dt.Xcode中找到Xcode的緩存吹零。

1. Supporting Caches

另外兩個值得注意的緩存是CarthageCocoaPods的緩存。 這些依賴項管理器可幫助您管理您可能在應(yīng)用程序中使用的第三方庫拉庵。

如果您使用Carthage灿椅,則可以在?/ Library / Caches / org.carthage.CarthageKit中找到其緩存。

CocoaPods有一個特殊的命令钞支,您可以用來清除其緩存茫蛹。 要清除CocoaPods緩存,請在終端中運行以下命令:

pod cache clean --all

使用專用的cache clean命令比手動刪除文件夾更好烁挟。 這是因為婴洼,如果CocoaPods更改了其存儲緩存的位置,則該命令仍適用于新位置撼嗓。 如果您決定編寫腳本來清除緩存柬采,那真是個好消息!

實際上静稻,在下一節(jié)中警没,您將做到這一點,將迄今為止在最終的春季大掃除腳本中學(xué)到的所有內(nèi)容結(jié)合在一起振湾!


Tying it All Together

與其記住要釋放一些數(shù)據(jù)的位置杀迹,不如將每個步驟整理到一個自動化腳本中,然后在空間不足時運行該腳本要容易得多押搪。

自動化解決方案不要做任何破壞性很重要的事情树酪。 清除某些文件夾(例如archives)時,請務(wù)必謹慎大州。

對于不需要人工操作的緩存和其他文件夾续语,腳本是合適的解決方案。

1. Creating a Script

首先厦画,打開一個終端窗口疮茄。 運行以下命令:

cd ~/Documents && touch clean-xcode.sh

這會將終端窗口的目錄更改為您的Documents文件夾滥朱。 之后,它將創(chuàng)建一個新的空白腳本力试。

注意:可能會要求您授予終端訪問文件文件夾中文件的權(quán)限徙邻。 如果要求您這樣做。

在您喜歡的文本編輯器中打開空腳本畸裳。 然后缰犁,鍵入:

#!/usr/bin/env bash

# 1
echo "Removing Derived Data..."
rm -rf ~/Library/Developer/Xcode/DerivedData/

# 2
echo "Removing Device Support..."
rm -rf ~/Library/Developer/Xcode/iOS\ DeviceSupport
rm -rf ~/Library/Developer/Xcode/watchOS\ DeviceSupport
rm -rf ~/Library/Developer/Xcode/tvOS\ DeviceSupport

# 3
echo "Removing old simulators..."
xcrun simctl delete unavailable

# 4
echo "Removing caches..."
rm -rf ~/Library/Caches/com.apple.dt.Xcode
rm -rf ~/Library/Caches/org.carthage.CarthageKit

# 5
if command -v pod  &> /dev/null
then
    # 6
    pod cache clean --all
fi

echo "Done!"

文件的開頭是一個Shebang,它告訴您的計算機如何執(zhí)行腳本怖糊。 shebang始終必須是腳本的第一行帅容。

文件的其余部分是到目前為止您學(xué)到的所有內(nèi)容的總和。 這是逐步發(fā)生的事情:

  • 1) 首先伍伤,echo將消息輸出到終端并徘,因此您知道腳本的運行方式。 然后嚷缭,rm刪除derived data文件夾饮亏。
  • 2) 打印另一個狀態(tài)更新,然后刪除每個device support文件夾阅爽。 如果文件夾不存在路幸,則什么也不會發(fā)生。
  • 3) 刪除不可用的模擬器付翁。
  • 4) 刪除XcodeCarthage的緩存(如果存在)简肴。
  • 5) 檢查此計算機上是否安裝了CocoaPods
  • 6) 如果安裝了CocoaPods百侧,清理CocoaPods cache砰识。

接下來,保存文件佣渴。 在TextEdit中辫狼,通過單擊File ? SaveTextEdit的菜單欄中進行此操作。

您已經(jīng)創(chuàng)建了腳本辛润,幾乎可以嘗試了膨处。

2. Running the Script

如果嘗試按原樣運行clean-xcode.sh,則會收到錯誤消息:

那是因為您的計算機將其視為文本文件砂竖,而不是您可以執(zhí)行的腳本或程序真椿。 要使其可執(zhí)行,您需要在終端中運行命令乎澄。

在“終端”窗口中突硝,運行以下命令:

chmod u+x clean-xcode.sh

現(xiàn)在,您的計算機將clean-xcode.sh識別為可執(zhí)行腳本置济。

注意:如果您還不準備刪除derived data, device support or caches解恰,請不要運行該腳本锋八。 您仍可以繼續(xù)閱讀本節(jié)的其余部分。

最后修噪,您可以通過在終端中指定其路徑來運行clean-xcode.sh

./clean-xcode.sh

該腳本將執(zhí)行查库,并在清除派生數(shù)據(jù),設(shè)備支持黄琼,模擬器和緩存(derived data, device support, simulators and caches)時打印出狀態(tài)報告。

使用一個命令整慎,您已經(jīng)收回了Xcode隨著時間的推移而建立的一些存儲脏款。

在本教程中,您學(xué)習(xí)了一些方法來回收Xcode聲稱擁有的某些存儲裤园。 您了解了何時要清除每個位置撤师,以及何時應(yīng)該更謹慎地刪除某些文件。 您還了解了Xcode的緩存和中間數(shù)據(jù)如何影響編譯問題拧揽。

要了解有關(guān)Xcode在整個構(gòu)建過程中如何工作的更多信息剃盾,以及更多用于構(gòu)建自動化的腳本,請參閱iOS App Distribution & Best Practices淤袜。

后記

本篇主要講述了Xcode內(nèi)存管理痒谴,感興趣的給個贊或者關(guān)注~~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市铡羡,隨后出現(xiàn)的幾起案子积蔚,更是在濱河造成了極大的恐慌,老刑警劉巖烦周,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尽爆,死亡現(xiàn)場離奇詭異,居然都是意外死亡读慎,警方通過查閱死者的電腦和手機漱贱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來夭委,“玉大人幅狮,你說我怎么就攤上這事∪蜓ィ” “怎么了彪笼?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蚂且。 經(jīng)常有香客問我配猫,道長,這世上最難降的妖魔是什么杏死? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任泵肄,我火速辦了婚禮捆交,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腐巢。我一直安慰自己品追,他們只是感情好,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布冯丙。 她就那樣靜靜地躺著肉瓦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪胃惜。 梳的紋絲不亂的頭發(fā)上泞莉,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天船殉,我揣著相機與錄音鲫趁,去河邊找鬼。 笑死利虫,一個胖子當著我的面吹牛挨厚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播糠惫,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼疫剃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了寞钥?” 一聲冷哼從身側(cè)響起慌申,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎理郑,沒想到半個月后蹄溉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡您炉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年柒爵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赚爵。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡棉胀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出冀膝,到底是詐尸還是另有隱情唁奢,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布窝剖,位于F島的核電站麻掸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏赐纱。R本人自食惡果不足惜脊奋,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一熬北、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诚隙,春花似錦讶隐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至地消,卻和暖如春烈评,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背犯建。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瓜客,地道東北人适瓦。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像谱仪,于是被迫代替她去往敵國和親玻熙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

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