iOS12槽棍、iOS11、iOS10抬驴、iOS9常見適配

一炼七、iOS12(Xcode10)

1.1、升級Xcode10后項目報錯

不允許多個info.plist

Xcode10是默認選中的最新的New Build System(Default)布持,在這個編譯系統(tǒng)的環(huán)境下豌拙,不允許多個info.plist

解決辦法一:(推薦)

build system切換到 Legacy Build System,換言之就是切換成老的編譯系統(tǒng)题暖,就OK了按傅。Xcode->File->Project Settings-> Build System -> Legacy Build System.

image.png
image.png
解決辦法二:

刪除其他info.plist文件捉超。

iOS 12移除了libstdc++, 用libc++替代

Xcode10中l(wèi)ibstdc++相關(guān)的3個庫(libstdc++、libstdc++.6逞敷、libstdc++6.0.9)應(yīng)該都是被徹底廢棄了狂秦,如果你使用的三方庫中有依賴灌侣,請盡快和提供方溝通推捐,告知他們遷移吧。如果自己開發(fā)使用侧啼,也盡快考慮遷移的事宜吧牛柒。

1.2、iPhone XR不支持3D-Touch

OC檢測代碼
if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) {

}
復(fù)制代碼
swift檢測代碼
self.traitCollection.forceTouchCapability == .availible
復(fù)制代碼

二痊乾、iOS11(Xcode9)

2.1皮壁、安全區(qū)域(SafeArea)

iOS11為UIViewControllerUIView增加了兩個新的屬性safeAreaInsetssafeAreaLayoutGuide

  • [ ] safeAreaInsets 適用于手動計算.
  • [ ] safeAreaLayoutGuide 適用于自動布局.
UIViewController中新增:
- (void)viewSafeAreaInsetsDidChange;
UIView中新增:
- (void)viewSafeAreaInsetsDidChange;
復(fù)制代碼

Storyboard使用Safe Area最低只支持iOS9哪审,iOS8的用戶就要放棄了

image.png

UIViewController調(diào)用- (void)viewDidLoad時它的所有子視圖的safeAreaInsets屬性都等于UIEdgeInsetsZero蛾魄。

viewSafeAreaInsetsDidChange的調(diào)用時機如下:

  • [ ] 1、viewDidLoad
  • [ ] 2湿滓、viewWillAppear
  • [x] 3滴须、viewSafeAreaInsetsDidChange
  • [ ] 4、viewWillLayoutSubviews
  • [ ] 5叽奥、viewDidAppear

只有在調(diào)用viewSafeAreaInsetsDidChange后扔水,才能獲得view以及viewControllerSafeArea(UIEdgeInsets)。因此在viewDidload中根據(jù)SafeArea設(shè)置界面會有問題朝氓。

iPhone X:有導(dǎo)航欄的時候可以+44

豎屏 safeAreaInsets = (top = 44, left = 0, bottom = 34, right = 0)
橫屏 safeAreaInsets = (top = 0, left = 44, bottom = 21, right = 44)
#import "Adaptive11VC.h"
static inline UIEdgeInsets sgm_safeAreaInset(UIView *view) {
    if (@available(iOS 11.0, *)) {
        return view.safeAreaInsets;
    }
    return UIEdgeInsetsZero;
}

@interface Adaptive11VC ()
@end
@implementation Adaptive11VC
- (void)viewDidLoad {
    [super viewDidLoad];
}
- (void)testSafeArea {
    UIEdgeInsets safeAreaInsets = sgm_safeAreaInset(self.view);
    NSLog(@"safeAreaInsets = %@", NSStringFromUIEdgeInsets(safeAreaInsets));
}
- (void)viewSafeAreaInsetsDidChange {
    [super viewSafeAreaInsetsDidChange];
    [self testSafeArea];
}
@end
復(fù)制代碼

2.2魔市、UIScrollView

iOS 11廢棄了UIViewControllerautomaticallyAdjustsScrollViewInsets屬性,新增了contentInsetAdjustmentBehavior屬性赵哲,所以當超出安全區(qū)域時系統(tǒng)自動調(diào)整了SafeAreaInsets待德,進而影響了adjustedContentInset,在iOS11中決定tableView內(nèi)容與邊緣距離的是adjustedContentInset枫夺,所以需要設(shè)置UIScrollViewcontentInsetAdjustmentBehavior屬性将宪。

// 方式一:(不推薦)修改額外的安全區(qū)域
if (@available(iOS 11.0, *)) {
    self.additionalSafeAreaInsets = UIEdgeInsetsMake(-44, 0, 0, 0);
}
else {
    // Fallback on earlier versions
}
// 方式二:(推薦)設(shè)置為不自動調(diào)整
if (@available(iOS 11.0, *)) {
    // 作用于指定的UIScrollView
    self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    // 作用與所有的UIScrollView
    UIScrollView.appearance.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
else {
    self.automaticallyAdjustsScrollViewInsets = NO;
}
復(fù)制代碼

2.3、tableview問題

iOS11開始UITableView開啟了自動估算行高筷屡,estimatedRowHeight``estimatedSectionHeaderHeight estimatedSectionFooterHeight三個高度估算屬性由默認的0變成了UITableViewAutomaticDimension涧偷,如果不實現(xiàn)-tableView: viewForFooterInSection:-tableView: viewForHeaderInSection:,那么estimatedRowHeight estimatedSectionHeaderHeight estimatedSectionFooterHeight三個高度估算屬性由默認的0變成了UITableViewAutomaticDimension毙死,導(dǎo)致高度計算不對燎潮,會產(chǎn)生空白。解決方法是實現(xiàn)對應(yīng)方法或吧這三個屬性設(shè)為0扼倘。

2.4确封、LocalAuthentication 本地認證

本地認證框架提供了從具有指定安全策略(密碼或生物學(xué)特征)的用戶請求身份驗證的功能除呵。例如,要求用戶僅使用Face ID或Touch ID進行身份驗證爪喘,可使用以下代碼:

#import <LocalAuthentication/LocalAuthentication.h>
/**
 檢測TouchID是否可用
 */
- (void)checkBiometrics {
    LAContext *context = [[LAContext alloc] init];
    BOOL success = [context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
                                        error:nil];
    if ( success ) {
        NSLog(@"can use");
    }
    else {
        NSLog(@"can`t use ");
    }
}
/**
 在驗證TouchID可用的情況下使用
 */
- (void)excuteBiometrics {
    LAContext *context = [[LAContext alloc] init];
    context.localizedFallbackTitle = @"自定義標題";
    [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
            localizedReason:@"為什么使用TouchID寫這里"
                      reply:^(BOOL success, NSError * _Nullable error) {
        if ( success ) {
            // 指紋驗證成功
        }
        else {
            switch (error.code) {
                case LAErrorUserFallback:{
                    NSLog(@"用戶選擇輸入密碼");
                    break;
                }
                case LAErrorAuthenticationFailed:{
                    NSLog(@"驗證失敗");
                    break;
                }
                case LAErrorUserCancel:{
                    NSLog(@"用戶取消");
                    break;
                }
                case LAErrorSystemCancel:{
                    NSLog(@"系統(tǒng)取消");
                    break;
                }
                // 以下三種情況如果提前檢測TouchID是否可用就不會出現(xiàn)
                case LAErrorPasscodeNotSet:{
                    break;
                }
                case LAErrorTouchIDNotAvailable:{
                    break;
                }
                case LAErrorTouchIDNotEnrolled:{
                    break;
                }
                default:
                    break;
            }
        }
    }];
}
復(fù)制代碼

2.5颜曾、啟動圖的適配

方法一:通過LaunchScreen.storyboard方式啟動

方法二:使用Assets中的LaunchImage

image.png
  • 給Brand Assets添加一張1125*2436大小的圖片
    • 打開Assets.xcassets文件夾,找到Brand Assets
    • 右鍵Show in Finder
    • 添加一張1125*2436大小的圖片
  • 修改Contents.json文件,添加如下內(nèi)容
{
    "extent" : "full-screen",
    "idiom" : "iphone",
    "subtype" : "2436h",
    "filename" : "1125_2436.png",
    "minimum-system-version" : "11.0",
    "orientation" : "portrait",
    "scale" : "3x"
}
復(fù)制代碼

2.6秉剑、定位相關(guān)

在 iOS 11 中必須支持 When In Use 授權(quán)模式(NSLocationWhenInUseUsageDescription)泛豪,在 iOS 11 中,為了避免開發(fā)者只提供請求 Always 授權(quán)模式這種情況侦鹏,加入此限制诡曙,如果不提供When In Use 授權(quán)模式,那么 Always 相關(guān)授權(quán)模式也無法正常使用略水。

如果要支持老版本价卤,即 iOS 11 以下系統(tǒng)版本,那么建議在 info.plist 中配置所有的 Key(即使 NSLocationAlwaysUsageDescription 在 iOS 11及以上版本不再使用):

NSLocationWhenInUseUsageDescription
NSLocationAlwaysAndWhenInUseUsageDescription
NSLocationAlwaysUsageDescription
NSLocationAlwaysAndWhenInUseUsageDescription  // 為 iOS 11 中新引入的一個 Key渊涝。
復(fù)制代碼

2.7慎璧、iOS11中 UIKit’s Bars 上的變化

三、iOS10(Xcode8)

3.1跨释、(Why胸私?Safe!)插件取消

Xcode8取消了三方插件(很多優(yōu)秀的插件煤傍,本來可以顯著提高效率)的功能盖文,使用Extension代替Xcode 8 Extension 推薦

3.2、證書問題

為了方便用戶來管理蚯姆,提供Automatically manage signing。需要輸入開發(fā)者賬號!如果沒有賬號也沒關(guān)系郭毕,在下面也可以選擇Debug它碎、RealeaseinHouse模式下對應(yīng)的證書也可以扳肛!

3.3、隱私數(shù)據(jù)訪問問題

iOS10挖息,蘋果加強了對隱私數(shù)據(jù)的保護套腹,要對隱私數(shù)據(jù)權(quán)限做一個適配绪抛,iOS10調(diào)用相機,訪問通訊錄电禀,訪問相冊等都要在info.plist中加入權(quán)限訪問描述幢码,不然之前你們的項目涉及到這些權(quán)限的地方就會直接crash掉。


解決辦法: 只需要在info.plist添加NSContactsUsageDescriptionkey, value自己隨意填寫就可以,這里列舉出對應(yīng)的key(Source Code模式下):

<key>NSPhotoLibraryUsageDescription</key><string>App需要您的同意,才能訪問相冊</string>

<key>NSCameraUsageDescription</key><string>App需要您的同意,才能訪問相機</string>

<key>NSMicrophoneUsageDescription</key><string>App需要您的同意,才能訪問麥克風(fēng)</string>

<key>NSLocationUsageDescription</key><string>App需要您的同意,才能訪問位置</string>

<key>NSLocationWhenInUseUsageDescription</key><string>App需要您的同意,才能在使用期間訪問位置</string>

<key>NSLocationAlwaysUsageDescription</key><string>App需要您的同意,才能始終訪問位置</string>

<key>NSCalendarsUsageDescription</key><string>App需要您的同意,才能訪問日歷</string>

<key>NSRemindersUsageDescription</key><string>App需要您的同意,才能訪問提醒事項</string>

<key>NSMotionUsageDescription</key><string>App需要您的同意,才能訪問運動與健身</string>

<key>NSHealthUpdateUsageDescription</key><string>App需要您的同意,才能訪問健康更新 </string>

<key>NSHealthShareUsageDescription</key><string>App需要您的同意,才能訪問健康分享</string>

<key>NSBluetoothPeripheralUsageDescription</key><string>App需要您的同意,才能訪問藍牙</string>

<key>NSAppleMusicUsageDescription</key><string>App需要您的同意,才能訪問媒體資料庫</string>
復(fù)制代碼
隱私數(shù)據(jù) 對應(yīng)key值
相冊 NSPhotoLibraryUsageDescription
相機 NSCameraUsageDescription
麥克風(fēng) NSMicrophoneUsageDescription
位置 NSLocationUsageDescription
在使用期間訪問位置 NSLocationWhenInUseUsageDescription
始終訪問位置 NSLocationAlwaysUsageDescription
日歷 NSCalendarsUsageDescription
提醒事項 NSRemindersUsageDescription
運動與健身 NSMotionUsageDescription
健康更新 NSHealthUpdateUsageDescription
健康分享 NSHealthShareUsageDescription
藍牙 NSBluetoothPeripheralUsageDescription
媒體資料庫 NSAppleMusicUsageDescription

3.4尖飞、跳轉(zhuǎn)到app內(nèi)的隱私數(shù)據(jù)設(shè)置頁面

iOS 10 干掉了所有系統(tǒng)設(shè)置的 URL Scheme症副,這意味著你再也不可能直接跳轉(zhuǎn)到系統(tǒng)設(shè)置頁面(比如 WiFi、蜂窩數(shù)據(jù)葫松、定位等)瓦糕。

跳轉(zhuǎn)方式

方式一:prefs:root=某項服務(wù) 適用于 小于 iOS10的系統(tǒng); NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];


方式二:prefs:root=bundleID 適用于 大于等于iOS8系統(tǒng)腋么,小于iOS10的系統(tǒng) NSURL *url = [NSURL URLWithString:@"prefs:root=bundleID"];


方式三:UIApplicationOpenSettingsURLString 適用于 大于等于iOS8的系統(tǒng) NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];

// iOS系統(tǒng)版本 >= 10.0
{
    NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        [[UIApplication sharedApplication] openURL:url];
    }
}
return;
// iOS系統(tǒng)版本 >= 10.0
// But! 不建議這樣做哦,官方文檔中說過:
// `URL is now considered a private API and use will result in app rejection`.
// 雖然是有可能躲過蘋果的檢測亥揖,但是蘋果如果發(fā)現(xiàn)你這樣用了珊擂,app上架是有被拒的風(fēng)險的.
{
    NSURL *url = [NSURL URLWithString:@"APP-Prefs:root=WIFI"];
    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        if (@available(iOS 10.0, *)) {
            [[UIApplication sharedApplication] openURL:url 
                                               options:@{} 
                                     completionHandler:nil];
        } else {
            // Fallback on earlier versions
        }
    }
}
// iOS系統(tǒng)版本 < 10.0
{
    NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        [[UIApplication sharedApplication] openURL:url];
    }
}
復(fù)制代碼

跳轉(zhuǎn)目的地

  • [x] iOS系統(tǒng)版本 <= iOS7 , 只能跳轉(zhuǎn)到 系統(tǒng)設(shè)置頁面
  • [x] iOS系統(tǒng)版本 >= iOS8 ,支持跳轉(zhuǎn)到第三方應(yīng)用的設(shè)置界面中费变。使用prefs:root=bundleID ,bundleID是你第三方應(yīng)用工程的唯一ID
  • [x] iOS系統(tǒng)版本 >= iOS10摧扇,支持跳轉(zhuǎn)到自己應(yīng)用設(shè)置,不支持跳轉(zhuǎn)到系統(tǒng)設(shè)置

3.5挚歧、字體變化

蘋果的默認字體會隨著iOS系統(tǒng)版本的不同而不同扛稽,iOS10中字體變大了。導(dǎo)致了原來的顯示有問題滑负,會造成...的出現(xiàn)在张。暫時沒有好的解決辦法,需要自己在一個個適配一下矮慕!

3.6帮匾、UICollectionViewCell的的優(yōu)化

  • 在iOS 10 之前,cell只能從重用隊列里面取出,再走一遍生命周期,并調(diào)用cellForItemAtIndexPath創(chuàng)建或者生成一個cell.

  • 在iOS 10 中,系統(tǒng)會cell保存一段時間,也就是說當用戶把cell滑出屏幕以后,如果又滑動回來,cell不用再走一遍生命周期了,只需要調(diào)用willDisplayCell方法就可以重新出現(xiàn)在屏幕中了.

  • iOS 10 中,系統(tǒng)是一個一個加載cell的,二以前是一行一行加載的,這樣就可以提升很多性能;

  • iOS 10 新增加的Pre-Fetching預(yù)加載

3.7、UIRefreshControl

在iOS 10 中, UIRefreshControl可以直接在UICollectionView和UITableView中使用,并且脫離了UITableViewController.現(xiàn)在RefreshControl是UIScrollView的一個屬性.

3.8痴鳄、UserNotifications(用戶通知)

  • iOS 10所有相關(guān)通知被統(tǒng)一到了UserNotifications.framework框架中瘟斜。增加了撤銷、更新痪寻、中途還可以修改通知的內(nèi)容螺句。通知不在是簡單的文本了,可以加入視頻橡类、圖片蛇尚,自定義通知的展示等等。

  • iOS 10相對之前的通知來說更加好用易于管理猫态,并且進行了大規(guī)模優(yōu)化佣蓉,對于開發(fā)者來說是一件好事披摄。

  • iOS 10開始對于權(quán)限問題進行了優(yōu)化,申請權(quán)限就比較簡單了(本地與遠程通知集成在一個方法中)勇凭。

四疚膊、iOS9(Xcode7)

4.1、Bitcode

Xcode7 默認啟用 Bitcode虾标,但是如果我們用到的第三方庫編譯時還沒啟用 Bitcode寓盗,主工程就會編譯不過。Bitcode 是蘋果 App Thinning 的機制之一璧函,可以減少安裝包的大小傀蚌。App store 會將這個 Bitcode 編譯為可執(zhí)行的64位或32位程序。

解決辦法一: 最簡單的解決辦法是先把 Bitcode 關(guān)掉:把 Build settings - Build Options - Enable Bitcode 改為 NO蘸吓。

[圖片上傳中...(image-de80aa-1548544915565-0)]

<figcaption style="user-select: text !important; display: block; text-align: center; font-size: 1rem; line-height: 1.6; color: rgb(144, 144, 144); margin-top: 2px;"></figcaption>

解決辦法二: 移除不支持BitCode的平臺SDK善炫,或者尋找支持BitCode的替代品,或者聯(lián)系SDK方支持BitCode库继。

4.2箩艺、HTTP 請求失敗

iOS9 默認不支持 HTTP 請求,需要改用更安全的 HTTPS(默認用 TLS 1.2)宪萄。蘋果還提供了配置艺谆,使得所有安全性更低的網(wǎng)絡(luò)請求也能使用,解決方案就是在 info.plist 里面增加以下配置:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
復(fù)制代碼

如果復(fù)雜一些拜英,還可以指定白名單域名静汤,聲明所支持 TLS 的最低版本。另外需要注意的是居凶,即使寫了上述配置虫给,在 HTTPS 頁面中,HTTP 的 javascript 或 css 不會被加載排监,因為蘋果認為這降低了頁面的安全性狰右。

4.3、canOpenUrl 限制

canOpenUrl 可以用來判斷用戶是否安裝了某個 APP舆床。也許是出于用戶隱私的考慮棋蚌,iOS9 上對 canOpenUrl 做了限制,最多只能對 50 個 scheme 做判斷挨队。如果是用 Xcode7 編譯谷暮,需要在 plist 里面聲明這些 scheme,沒有聲明的會直接返回 NO:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>weixin</string>
    <string>wechat</string>
</array>
復(fù)制代碼

4.4盛垦、UIStatusBar的問題

iOS9中廢棄的方法

// 修改狀態(tài)欄的樣式為白色
// 'setStatusBarStyle(_:animated:)' was deprecated in iOS 9.0: Use -[UIViewController preferredStatusBarStyle]
UIApplication.shared.setStatusBarStyle(.lightContent, animated: true)
// 隱藏狀態(tài)欄
// 'setStatusBarHidden(_:with:)' was deprecated in iOS 9.0: Use -[UIViewController prefersStatusBarHidden]
UIApplication.shared.setStatusBarHidden(true, with: .fade)
復(fù)制代碼

用下面兩個方法替換

-[UIViewController preferredStatusBarstyle]
-[UIViewController preferredStatusBarHidden]
復(fù)制代碼

參考資料:

iOS12適配

iOS12AdaptationTips

關(guān)于iPhone X 的適配

iOS11適配iPhoneX總結(jié)

iOS 10 適配知識點總結(jié)

聊聊iOS 10更新以后跳轉(zhuǎn)系統(tǒng)設(shè)置的幾種方式

iOS 10 調(diào)用系統(tǒng)"設(shè)置"里的功能(全)

iOS TouchID驗證和Keychain結(jié)合使用

iOS10AdaptationTips

適配iOS9

微信 iOS 9 適配總結(jié)

iOS9AdaptationTips

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末湿弦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子腾夯,更是在濱河造成了極大的恐慌颊埃,老刑警劉巖蔬充,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異班利,居然都是意外死亡饥漫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門罗标,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庸队,“玉大人,你說我怎么就攤上這事闯割〕瓜” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵宙拉,是天一觀的道長宾尚。 經(jīng)常有香客問我,道長鼓黔,這世上最難降的妖魔是什么央勒? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮澳化,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘稳吮。我一直安慰自己缎谷,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布灶似。 她就那樣靜靜地躺著列林,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酪惭。 梳的紋絲不亂的頭發(fā)上希痴,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音春感,去河邊找鬼砌创。 笑死,一個胖子當著我的面吹牛鲫懒,可吹牛的內(nèi)容都是我干的嫩实。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼窥岩,長吁一口氣:“原來是場噩夢啊……” “哼甲献!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起颂翼,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤晃洒,失蹤者是張志新(化名)和其女友劉穎慨灭,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體球及,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡氧骤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了桶略。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片语淘。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖际歼,靈堂內(nèi)的尸體忽然破棺而出惶翻,到底是詐尸還是另有隱情,我是刑警寧澤鹅心,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布吕粗,位于F島的核電站,受9級特大地震影響旭愧,放射性物質(zhì)發(fā)生泄漏颅筋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一输枯、第九天 我趴在偏房一處隱蔽的房頂上張望议泵。 院中可真熱鬧,春花似錦桃熄、人聲如沸先口。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碉京。三九已至,卻和暖如春螟深,著一層夾襖步出監(jiān)牢的瞬間谐宙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工界弧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留凡蜻,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓夹纫,卻偏偏與公主長得像咽瓷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子舰讹,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

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