iOS疑難雜癥匯總

問題1:EXC_BREAKPOINT(code=EXC_XXX_BPT,subcode=0x0) 非法指令

打開Zombie Objects 后輸出:

-[XXXXXXViewContoller respondsToSelector:]: message sent to deallocated instance 0x7fcb83cef240

原因:

很明顯這是因為一個UIViewController釋放后,又再次向這個VC調用了某些請求導致碗硬。而且根據(jù)log發(fā)現(xiàn)該VC是執(zhí)行了dealloc方法焰盗,這就說明可能是在VC中設置了 xxx.delegate=self;VC釋放后榆芦,這個xx還沒有被釋放趋距,所以xx的回調方法還在調用delegate即這里的VC, 所以崩潰就發(fā)生了亦鳞。

解決辦法:

解決辦法是在dealloc中設置xx.delegate = nil;即可僧界。(吐槽一句:為毛apple的工程師不判斷一下delegate是否為nil再去調用方法)


問題2:Terminating app due to uncaught exception 'NSUnknownKeyException'
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIViewController 0x7f861c40a750> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key tableView.'
*** First throw call stack:

原因:

這個問題在自定義的xib或者stroybord中都會出現(xiàn)呆细,原因是因為某些原因型宝,(從別的地方復制了xib過來、將xib進行了刪除然后又撤銷回來等)這個時候雖然在xib上面或者單單從代碼上面看絮爷,是沒有問題的趴酣,但是因為復制或者還原是某些數(shù)據(jù)并不能恢復,這將就導致了xib和代碼里的東西不一致坑夯,像上面這個錯誤明細就是說在ViewController里面找不到tableView岖寞,其它的情況基本類似

解決辦法:

檢查outlets連接器,看看有沒有已經(jīng)被刪除柜蜈,卻還存在的鏈接仗谆,如果這個辦法不能解決,可以去查看xib的Source Code淑履,檢查有沒有多余的連接隶垮,最后如果還找不出來的話,刪掉xib秘噪,重新寫肯定能行狸吞。


問題3:在帶有tabBar的頁面使用NavigationController push到子頁面去,子頁面push過程中保留Tabbar的高度指煎,push完成后子頁面布局再下沉
原因:

這個問題在新版的xcode8中出現(xiàn)蹋偏,原因是使用stroybord創(chuàng)建約束的時候,view上面的子視圖對照的是Bottom Layout Guide(列如:self.view上面放一個按鈕贯要,建立和self.view的上下左右約束暖侨,上下約束默認是參照Top Layout Guide/Bottom Layout Guide),而不是self.view (注:此方法不能兼容iPhone X,iOS11下應該為系統(tǒng)的Bug崇渗,iOS11可以直接與Top Layout Guide/Bottom Layout Guide建立約束不會出現(xiàn)下沉的問題)

解決辦法:

將子視圖原來的buttom約束刪掉字逗,再選擇子視圖和self.view,在Align中選擇Bottom edges 設置為想要設置的值就ok了宅广。


問題4:在使用appearance設置了自定義的導航欄返回按鈕后

想禁用某個指定的頁面系統(tǒng)自帶的滑動返回葫掉,使用self.navigationController.interactivePopGestureRecognizer.enabled = NO 并沒有上面卵用,或者設置interactivePopGestureRecognizer代理跟狱,或者再寫一個滑動事件加在這個頁面上俭厚,你會發(fā)現(xiàn)都沒有什么用

原因:

其實在self.navigationController.view.gestureRecognizers中的手勢有兩個,interactivePopGestureRecognizer只是其中的一個驶臊,另外還有一個拖動手勢并沒有被禁用掉挪挤,所有針對interactivePopGestureRecognizer方法統(tǒng)統(tǒng)沒有效果

解決辦法:

遍歷self.navigationController.view.gestureRecognizers叼丑,將所有的手勢都禁用掉,代碼如下

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    //關閉navigationController上面的所有手勢
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)])
    {
        for (UIGestureRecognizer *gr in self.navigationController.view.gestureRecognizers) {
            gr.enabled = NO;
        }
    }
}
-(void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    //打開navigationController上面的所有手勢
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)])
    {
        for (UIGestureRecognizer *gr in self.navigationController.view.gestureRecognizers) {
            gr.enabled = YES;
        }
    }
}


問題5:去除字符串html樣式及標簽
-(NSString *)filterHTML:(NSString *)html
{
    NSScanner * scanner = [NSScanner scannerWithString:html];
    NSString * text = nil;
    while([scanner isAtEnd]==NO)
    {
        [scanner scanUpToString:@"<" intoString:nil];
        [scanner scanUpToString:@">" intoString:&text];
        html = [html stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@>",text] withString:@""];
    }
    return html;
}


問題6:clang: error: linker command failed with exit code 1 (use -v to see invocation)

編譯時鏈接器器工作時出現(xiàn)了錯誤扛门,由此可見是文件沒有被鏈接索引到鸠信。這種問題一般出現(xiàn)在導入SDK中的.a或者.o文件時,或者在項目中添加了多個重復類名的問題论寨,導致鏈接器拋出錯誤星立。

解決辦法:

一般在這個錯誤的詳細信息里面會有l(wèi)inker時出問題的類名或者文件名字,找到相關的文件排查一下葬凳,

  • 可以將錯誤日志中包含的文件先刪除掉绰垂,再重新導入了;
  • 檢查文件庫的引用路徑是否正確火焰,
  • 檢查新添加的文件是否在工程配置匯總添加目錄索引劲装;
  • 如果項目中有多個target,可以看看這個文件是否有包含在當前編譯的target中荐健;
  • 檢查是否有重復命名的類文件酱畅。
  • 檢查引入的文件中是否有重復定義的常量、宏江场、結構體
  • 檢查是否已經(jīng)將引入的第三方SDK所依賴的系統(tǒng)庫文件添加到項目中
  • shift+cmd+K清除一下再重新編譯(Xcode 可能抽風了)

問題7:【在CoreData中】,使用分組查詢想要的字段窖逗,但是并不想group by這個字段

列如:select A,B from table group by A 是做不到的址否,這尼瑪就尷尬了,這會報出以下異常錯誤

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'SELECT clauses in queries with GROUP BY components can only contain properties named in the GROUP BY or aggregate functions ((<NSAttributeDescription: 0x6080002e3b80>), name guidanceprice, isOptional 1, isTransient 0, entity Cars, renamingIdentifier guidanceprice, validation predicates (
), warnings (
), versionHashModifier (null)
 userInfo {
}, attributeType 700 , attributeValueClassName NSString, defaultValue (null) is not in the GROUP BY)'

解決辦法:

不用CoreData了碎紊,老子要換FMDB


問題8:

在添加了一個庫或者SDK之后佑附,使用模擬器運行項目沒有警告,沒有錯誤仗考,卻一直報 You don’t have permission

原因:

存在兩個都以上的info.plist文件音同,多半是剛剛添加的庫或者SDK中也有一個info.plist問題

解決辦法:

將導入的庫或者SDK中的info.plist刪除掉就好了。


問題9:

改變UITabBar上面字體的顏色

解決辦法:

[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName, nil] forState:UIControlStateNormal];
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor orangeColor], NSForegroundColorAttributeName, nil] forState:UIControlStateSelected];


問題10:使UITabBar上面的圖片不渲染秃嗜,保持圖片原有的顏色
解決辦法:
for (UITabBarItem * item  in self.tabBar.items) {
        item.selectedImage = [item.selectedImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        item.image = [item.image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
    }


問題11:FMDB插入大量數(shù)據(jù)耗時太久
原因:

FMDB執(zhí)行插入語句每次只能執(zhí)行一條权均,多余如果有很多數(shù)據(jù),必須要使用循環(huán)來一條一條插入锅锨,如果使用傳統(tǒng)的方式去執(zhí)行sql語句一條一條插入會非常慢叽赊,插入的本身并不會耗費很長的時間,但是每次插入都需要向數(shù)據(jù)庫提交必搞,如果有幾萬條就意外著需要提交幾萬次必指,所以這會變得非常非常慢。

解決辦法:

使用事務來插入數(shù)據(jù)恕洲,等所有插入操作完成無誤后塔橡,再一次性提交梅割,這樣不管插入多少條,都只會提交一次葛家,這會極高的減少耗時炮捧。

  [self.dbQueue inTransaction:^(FMDatabase *db, BOOL *rollback) {
        @try {
            for (NSString *sql in array) {
                if ( sql == nil ||[sql stringByReplacingOccurrencesOfString:@" " withString:@""].length == 0) {
                    continue;
                }
                bool ret = [db executeUpdate:sql];
                if (!ret) {
                    MBLog(@"SQL ERROR :%@",sql);
                }
            }
        } @catch (NSException *exception) {
            rollback[0] = YES;//回滾事務
            MBLog(@"exception %@",exception);
        } @finally {
            rollback[0] = NO;//提交事務
            MBLog(@"Transaction commit");
        }
    }];


問題12:獲取一個view在window上面的位置
原因:

有很多是時候需要獲取到一個View在window上面的位置,如果通過遞歸計算的方式惦银,每次去取值都會比較麻煩咆课。

解決辦法:

其實系統(tǒng)的UIKit里面的API有提供獲將某個視圖位置轉換為在另一個視圖上面的位置


//返回在基準視圖上面這個視圖的實際位置,Return  CGRect
[取值的基準視圖 convertRect:需要轉換的視圖 fromView:需要轉換的視圖父視圖]


問題13:去除一個已棄用的低版本API警告
原因:

雖然這個API在現(xiàn)版本中已經(jīng)被棄用扯俱,甚至有新的API替代书蚪,但是很多時候為了實現(xiàn)某一個功能卻不得不用這些API,但是這些拋出來的警告會讓我們這樣的強迫癥患者難以接受迅栅。

解決辦法:

使用一個宏定義包裹已棄用的API代碼,這個宏的作用是:【忽略了已棄用的聲明】殊校,這樣警告就不會在編譯的時候出現(xiàn)那么扎眼了

#pragma clang diagnostic push
#pragma clang diagnostic ignored"-Wdeprecated-declarations"
//這里是拋出警告的已經(jīng)棄用API代碼
#pragma clang diagnostic pop

#pragma unused (foo)
//明確定義錯誤和警告
#error Whoa, buddy, you need to check for zero here!
#warning Dude, don't compare floating point numbers like this!


問題14:設置自定義的按鈕文字在左,圖片在右(默認文字在右读存,圖片在左)
原因

按鈕文字在左为流,圖片在右是web的下拉選擇按鈕的風格,但是在移動端让簿,有時候UI設計的就是抄襲web端的下拉菜單和選擇按鈕敬察,這時候就需要對默認的自定義按鈕文字和圖片位置做一些調整了。

解決辦法:

寫一個UIButton的擴展

#import "UIButton+Other.h"

@implementation UIButton (Other)
/**
 設置文字在左尔当,圖片在右
 */
-(void)setTitleLeftImageRight{
    if (self) {

        NSParameterAssert(self.imageView.image);
        //設置按鈕文字在左莲祸,圖片在右
        CGSize imgsz = self.imageView.image.size;
        [self setTitleEdgeInsets:UIEdgeInsetsMake(0, -imgsz.width-12, 0, imgsz.height)];//這里設置12為文字和圖片的間隙,可以調整
        [self setImageEdgeInsets:UIEdgeInsetsMake(0, self.titleLabel.bounds.size.width, 0, -self.titleLabel.bounds.size.width)];
    }
}
@end

//使用
[btn setTitleLeftImageRight];//文字在左,圖片在右

PS

這種方式雖然可以使用按鈕上面的圖片和標題位置互換椭迎,但博主在實際測試中發(fā)現(xiàn)比較消耗性能(圓角锐帜,邊框,產生了離屏渲染)畜号,如果一個頁面存在幾個以上這種按鈕的時候缴阎,就會在進入頁面時會產生零點幾秒的卡頓,并且這部分是UI部分的調整简软,不好放在異步子線程中去執(zhí)行蛮拔,所以如果真影響到性能,還是建議使用背景圖片代替替饿。


問題15:Xcode中打印字典或數(shù)組中的中文內容语泽,輸出Unicode編碼。
原因

apple在NSDictionary和NSArray的description方法中并未支持utf-8格式的編碼视卢,所有的中文都被輸出為Unicode編碼字符

解決辦法:

重寫系統(tǒng)NSDictionary和NSArray的description方法踱卵,在新的description將NSDictionary和NSArray原來的description返回的內容進行編碼轉換,返回可以在Xcode中輸出中文的格式,推薦使用gitHub開源庫ZXPUnicode
將三方分類文件拖入工程中惋砂,無需做任何更改即可在輸出NSDictionary和NSArray對象時打印出中文妒挎。


問題16:在UITableView加載完成后獲取到tableView的contentSize。
原因

tableView在加載數(shù)據(jù)的過程中是異步執(zhí)行西饵,如果直接在reloadData后面獲取contentSize并不能拿到正確的值酝掩。

解決辦法:

tableView雖然加載數(shù)據(jù)的過程是異步的,但是最后更新UI還是需要回到主線程眷柔,所以添加一個在加載方法后的主線程異步隊列就能在tableView加載完數(shù)據(jù)后獲取到tableView準確的contentSize期虾。

[self.tableView reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
     //刷新完成
     NSLog(@"contentSize:%lf",self.tableView.contentSize.height);
});


問題17:在ViewController的view上添加背景圖片。
來由

如果需要需要將一個頁面做成如下圖所示的樣子驯嘱,就會需要在self.view上面加上一張背景圖片镶苞,很多人的想法是用一個UIImageView加在self.view上面,然后把輸入框按鈕都在ImageView的上面鞠评,這樣這樣也能達到效果茂蚓,但是其實有更好的做法;


image
解決辦法:

將self.view.layer的contents賦值為CGImage剃幌,再將self.view.layer的背景顏色設置為透明聋涨,這樣就可以直接將self.view顯示一張圖片;關鍵在于CALayer的contents屬性

@property(strong) id contents;

提供圖層內容的對象负乡‰拱祝可動畫;此屬性的默認值為nil。如果使用圖層顯示靜態(tài)圖像敬鬓,則可以將此屬性設置為包含要顯示的圖像淹朋。you can set this property to the CGImageRef containing the image you want to display. (In macOS 10.6 and later, you can also set the property to an NSImage object.) (來自蘋果官方的文檔說明)

由此可見,layer的contents屬性就是用來顯示東西的钉答,并且這個東西可以是圖像,類型需要是CGImageRef杈抢。

    //獲取圖片路徑
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"bg" ofType:@"png"];
    //
    UIImage *image = [UIImage imageWithContentsOfFile:filePath];
    self.view.layer.contents = (id)image.CGImage;
    self.view.layer.backgroundColor = [UIColor clearColor].CGColor;

另外說一說這里用的加載圖片的方式使用的是imageWithContentsOfFile数尿,而不是imageNamed,原因在于使用imageNamed方式加載圖片會使圖片一直存在緩存中,這個頁面是一個登錄頁面惶楼,在登錄過后就用不到這張圖片了右蹦,所以不需要緩存這張圖片,使用imageWithContentsOfFile方式就不會將這張圖片一直存在(緩存)內存中歼捐,但是imageWithContentsOfFile不能獲取到images.xcassets中的圖片何陆,那么這張圖片就只能放在Bundle中了,雖然images.xcassets比較方便管理圖片資源豹储,但也這時候也并不是所有的圖片都要放在images.xcassets中贷盲。


問題18:動態(tài)獲取對象屬性的名稱、類型、值巩剖,并對類型進行識別铝穷。
    unsigned int propsCount;
    objc_property_t *props = class_copyPropertyList([obj class], &propsCount);
    for(int  i = 0;i < propsCount; i++)
    {
        objc_property_t  prop = props[i];
        NSString  *propName = [NSString stringWithUTF8String:property_getName(prop)];//獲取屬性名稱
        const char * type = property_getAttributes(prop);//獲取屬性類型
        NSString *typeStr = [NSString stringWithFormat:@"%s",type];//類型轉NSString
        id objValue = [obj valueForKey:propName];//獲取值
        NSArray *typeArray = [typeStr componentsSeparatedByString:@","];

        if (typeArray.count>0) {
            //類型判斷
            if ([typeArray[0] isEqualToString:@"T@\"NSString\""]) {//NSString

            }
            else if([typeArray[0] isEqualToString:@"Td"])//double
            {

            }
            else if([typeArray[0] isEqualToString:@"Tq"])//long
            {

            }
            else if([typeArray[0] isEqualToString:@"Tf"])//float
            {

            }
        }

    }

獲取屬性類型輸出示例
T@"NSString",C,N,V_屬性名稱//NSString
Tq,N,V_屬性名稱//long
Td,N,V_屬性名稱//double
Tf,N,V_屬性名稱//float

附Objective-C類型編碼
image

問題19:鏤空視圖。

如何把一個視圖挖空一部分佳魔,做成一種鏤空的效果曙聂?

需要用到的東西
  • layer.mask
  • UIBezierPath
首先

在window上面添加一個背景為半透明的視圖(也可以加在其他視圖上面)

     UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
     UIView *backgroundView = [[UIView alloc] init];
     backgroundView.frame = keyWindow.bounds;
     backgroundView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.7];
     [keyWindow addSubview:backgroundView];

創(chuàng)建兩個貝塞爾路徑,兩個路徑畫出來的內容需要有重疊部分

      // 創(chuàng)建一個全屏大的path
      UIBezierPath *path = [UIBezierPath bezierPathWithRect:keyWindow.bounds];
      // 創(chuàng)建一個圓形path
      UIBezierPath *circlePath = [UIBezierPath bezierPathWithArcCenter:pt
      radius:ct.size.width*0.65
      startAngle:0
      endAngle:2 * M_PI
      clockwise:NO];

重點來了

 //疊加path鞠鲜,重疊的部分將會鏤空透明
      [path appendPath:circlePath];

最后

//將path賦值給一個CAShapeLayer宁脊,再將這個CAShapeLayer賦值個之前創(chuàng)建的背景視圖layer的mask
    CAShapeLayer *shapeLayer = [CAShapeLayer layer];
    shapeLayer.path = path.CGPath;
    backgroundView.layer.mask = shapeLayer;


問題20:在擴展分類中添加屬性

前段時間在做UIDelegate代碼簡化的時候,因為在原來的UIDelegate類中加了很多全局的屬性贤姆,在簡化的時候想移動到分類文件中去榆苞,結果發(fā)現(xiàn)直接將屬性放入分類文件中會報錯,而將屬性放在主類文件中又違背了簡化的初衷庐氮。

這樣做:

擴展分類頭文件中添加屬性语稠,寫法與一般.h文件一致

//擴展分類的.h文件
@property(nonatomic,copy)NSString *str;

擴展分類.m文件需要重寫屬性的Getter,Setter方法

//一個固定的值代表這個屬性的標記
static NSString *strKey = @"_strKey";

//getter方法
-(NSString *)str
{
    return objc_getAssociatedObject(self, &strKey);
}
//setter方法
-(void)setStr:(NSString *)str
{
    objc_setAssociatedObject(self, &strKey, str, OBJC_ASSOCIATION_RETAIN);
}

OBJC_ASSOCIATION_RETAIN

在setter方法中弄砍,objc_setAssociatedObject中有一個參數(shù)為OBJC_ASSOCIATION_RETAIN仙畦,這個參數(shù)代表什么呢?查看它的聲明之后音婶,可以發(fā)現(xiàn)

/**
 * Policies related to associative references.
 * These are options to objc_setAssociatedObject()
 */
typedef OBJC_ENUM(uintptr_t, objc_AssociationPolicy) {
    OBJC_ASSOCIATION_ASSIGN = 0,           /**< Specifies a weak reference to the associated object. */
    OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1, /**< Specifies a strong reference to the associated object. 
                                            *   The association is not made atomically. */
    OBJC_ASSOCIATION_COPY_NONATOMIC = 3,   /**< Specifies that the associated object is copied. 
                                            *   The association is not made atomically. */
    OBJC_ASSOCIATION_RETAIN = 01401,       /**< Specifies a strong reference to the associated object.
                                            *   The association is made atomically. */
    OBJC_ASSOCIATION_COPY = 01403          /**< Specifies that the associated object is copied.
                                            *   The association is made atomically. */
};

沒錯慨畸,它是屬性的修飾符,那么在傳入這個參數(shù)時衣式,跟.h文件中的屬性聲明修飾符對應即可寸士。


問題21:計算源碼行數(shù)

打開終端,進入工程的根目錄碴卧,運行一下命令弱卡。

-name "*.m"代表著需要掃描的文件后綴,可根據(jù)自己的需求添加或刪除住册。

find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.h" -or -name "*.rss" ")" -print | xargs wc -l

未完待續(xù)...

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末婶博,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子荧飞,更是在濱河造成了極大的恐慌凡人,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叹阔,死亡現(xiàn)場離奇詭異挠轴,居然都是意外死亡,警方通過查閱死者的電腦和手機耳幢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門岸晦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事委煤√糜停” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵碧绞,是天一觀的道長府框。 經(jīng)常有香客問我,道長讥邻,這世上最難降的妖魔是什么迫靖? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮兴使,結果婚禮上系宜,老公的妹妹穿的比我還像新娘。我一直安慰自己发魄,他們只是感情好盹牧,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著励幼,像睡著了一般汰寓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上苹粟,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天有滑,我揣著相機與錄音,去河邊找鬼嵌削。 笑死毛好,一個胖子當著我的面吹牛,可吹牛的內容都是我干的苛秕。 我是一名探鬼主播肌访,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼艇劫!你這毒婦竟也來了场靴?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤港准,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后咧欣,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浅缸,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年魄咕,在試婚紗的時候發(fā)現(xiàn)自己被綠了衩椒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖毛萌,靈堂內的尸體忽然破棺而出苟弛,到底是詐尸還是另有隱情,我是刑警寧澤阁将,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布膏秫,位于F島的核電站,受9級特大地震影響做盅,放射性物質發(fā)生泄漏缤削。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一吹榴、第九天 我趴在偏房一處隱蔽的房頂上張望亭敢。 院中可真熱鬧,春花似錦图筹、人聲如沸帅刀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扣溺。三九已至,卻和暖如春民宿,著一層夾襖步出監(jiān)牢的瞬間娇妓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工活鹰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哈恰,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓志群,卻偏偏與公主長得像着绷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子锌云,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內容