NSUserDefaults詳解

概述:

NSUserDefaults,官網(wǎng)上的定義是一個用戶默認(rèn)數(shù)據(jù)庫的接口,在應(yīng)用程序的啟動過程中搀继,持久地存儲鍵值對吟策。每個應(yīng)用都有一個(也只有一個)NSUserDefaults對象驶冒。向NSUserDefaults類發(fā)送standardUserDefaults消息可以得到該對象苟翻。使用時需要通過鍵來存取其保存的對象韵卤。此外,當(dāng)應(yīng)用第一次使用NSUserDefaults對象時崇猫,這個對象會自動地從特定文件讀取數(shù)據(jù)沈条;修改數(shù)據(jù)后,該對象也會自動地將數(shù)據(jù)寫入文件诅炉。

NSUserDefaults支持的類型:

NSUserDefaults是一個單例蜡歹,它可以用于數(shù)據(jù)的永久存儲,適合存儲輕量級的本地數(shù)據(jù)涕烧。通過NSUserDefaults對象存取數(shù)據(jù)時月而,使用的鍵必須是NSString對象,一個鍵對應(yīng)一項設(shè)置(preference)澈魄。存取的對象必須是對象或者基本類型的數(shù)值景鼠。如果是對象仲翎,則必須是可序列化的(serializable)對象痹扇。通過NSUserDefaults類,知道NSUserDefaults支持的類型有NSString溯香、NSData鲫构、NSNumber、NSDate玫坛、NSArray and NSDictionary结笨。值得注意的是,NSUserDefaults 存儲的對象全是不可變的(這一點非常關(guān)鍵湿镀,弄錯的話程序會出bug)炕吸,例如,如果想要存儲一個NSMutableArray對象勉痴,則必須先創(chuàng)建一個不可變數(shù)組(NSArray)再將它存入NSUserDefaults中去赫模。

鍵的命名約定:

應(yīng)用名+設(shè)置名稱+單詞PrefKey

存儲路徑:

NSUserDefaults對象默認(rèn)會將數(shù)據(jù)存入Library/Preferences目錄,文件名就是程序包標(biāo)識(bundle identifier)蒸矛,文件后綴是plist瀑罗。當(dāng)應(yīng)用第一次調(diào)用NSUserDefaults類的standardUserDefaults方法時,NSUserDefaults會載入上述文件雏掠,讓應(yīng)用可以使用之前保存的所有設(shè)置斩祭。

NSUserDefaults的域:

UserDefaults數(shù)據(jù)庫中其實是由多個層級的域組成的,當(dāng)你讀取一個鍵值的數(shù)據(jù)時乡话,NSUserDefaults從上到下透過域的層級尋找正確的值摧玫,不同的域有不同的功能,有些域是可持久的绑青,有些域則不行席赂。默認(rèn)包含五個Domain吮铭,如下:

1、參數(shù)域( argument domain)有最高優(yōu)先權(quán)

2颅停、應(yīng)用域(application domain)是最重要的域谓晌,它存儲著你app通過NSUserDefaults set...forKey添加的設(shè)置

3、全局域(global domain)則存儲著系統(tǒng)的設(shè)置

4癞揉、語言域(language-specific domains)則包括地區(qū)纸肉、日期等

5、注冊域(registration domain)僅有較低的優(yōu)先權(quán)喊熟,只有在應(yīng)用域沒有找到值時才從注冊域去尋找

例如柏肪,當(dāng)某個界面是第一次運行時,這時的key值(鍵)所對應(yīng)的值還不存在芥牌,所以NSUserDefaults對象會使用默認(rèn)值為0烦味。但是對于某些設(shè)置,可能需要臨時的壁拉、非0的默認(rèn)值(如"出廠設(shè)置")谬俄,否則應(yīng)用將無法正確的運行。一般默認(rèn)值都是存放于注冊域中弃理。默認(rèn)情況下溃论,應(yīng)用域是空的,沒有鍵也沒有值痘昌。當(dāng)用戶第一次修改某個設(shè)置時钥勋,相應(yīng)的值會通過指定的鍵加入應(yīng)用域。當(dāng)通過NSUserDefaults對象獲取某個設(shè)置的值時辆苔,該對象先會在應(yīng)用域查找算灸,如果沒有,NSUserDefaults則會在注冊域中查找并返回默認(rèn)值驻啤。查詢順序:參數(shù)域 -> 應(yīng)用域 -> 全局域 -> 語言域 ->注冊域菲驴。

方法:

1、獲取標(biāo)準(zhǔn)用戶默認(rèn)對象

standardUserDefaults

返回配置為搜索當(dāng)前應(yīng)用程序搜索列表的NSUserDefaults的全局實例

2街佑、創(chuàng)建用戶默認(rèn)對象

- (instancetype)init;

用應(yīng)用程序和當(dāng)前用戶的默認(rèn)值初始化用戶默認(rèn)對象

- (nullableinstancetype)initWithSuiteName:(nullableNSString*)suitenameAPI_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0))NS_DESIGNATED_INITIALIZER;用指定數(shù)據(jù)庫名稱的默認(rèn)值初始化用戶默認(rèn)對象

3谢翎、獲取默認(rèn)值

- (nullableid)objectForKey:(NSString*)defaultName;

返回與指定鍵關(guān)聯(lián)的對象

- (nullableNSString*)stringForKey:(NSString*)defaultName;

返回與指定鍵關(guān)聯(lián)的字符串

- (nullableNSArray*)arrayForKey:(NSString*)defaultName;

返回與指定鍵關(guān)聯(lián)的數(shù)組

- (nullableNSDictionary?*)dictionaryForKey:(NSString*)defaultName;

返回與指定鍵關(guān)聯(lián)的字典對象

- (nullableNSData*)dataForKey:(NSString*)defaultName;

返回與指定鍵關(guān)聯(lián)的數(shù)據(jù)對象

- (nullableNSArray?*)stringArrayForKey:(NSString*)defaultName;

等效于-objectForKey

- (NSInteger)integerForKey:(NSString*)defaultName;

返回與指定鍵關(guān)聯(lián)的整數(shù)值

- (float)floatForKey:(NSString*)defaultName;

返回與指定鍵關(guān)聯(lián)的單精度浮點值

- (double)doubleForKey:(NSString*)defaultName;

返回與指定鍵關(guān)聯(lián)的雙精度浮點值

- (BOOL)boolForKey:(NSString*)defaultName;

返回與指定鍵關(guān)聯(lián)的布爾值

- (nullableNSURL*)URLForKey:(NSString*)defaultNameAPI_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0));

返回與指定鍵關(guān)聯(lián)的URL

dictionaryRepresentation

返回包含搜索列表中域中所有鍵值對的聯(lián)合的字典

4、設(shè)置默認(rèn)值

- (void)setObject:(nullableid)value forKey:(NSString*)defaultName;

設(shè)置指定的默認(rèn)鍵的值沐旨,value為要存儲的對象森逮,defaultName為指定的鍵

- (void)setInteger:(NSInteger)value forKey:(NSString*)defaultName;

設(shè)置指定的默認(rèn)鍵的值,value為要存儲的整數(shù)值磁携,defaultName為指定的鍵

- (void)setFloat:(float)value forKey:(NSString*)defaultName;

設(shè)置指定的默認(rèn)鍵的值褒侧,value為要存儲的單精度浮點值,defaultName為指定的鍵

- (void)setDouble:(double)value forKey:(NSString*)defaultName;

設(shè)置指定的默認(rèn)鍵的值,value為要存儲的雙精度浮點值闷供,defaultName為指定的鍵

- (void)setBool:(BOOL)value forKey:(NSString*)defaultName;

設(shè)置指定的默認(rèn)鍵的值烟央,value為要存儲的布爾值,defaultName為指定的鍵

- (void)setURL:(nullableNSURL*)url forKey:(NSString*)defaultNameAPI_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0));

設(shè)置指定的默認(rèn)鍵的值歪脏,url為要存儲的URL疑俭,defaultName為指定的鍵

5、移除默認(rèn)值

- (void)removeObjectForKey:(NSString*)defaultName;

移除指定的默認(rèn)鍵的值

6婿失、維護(hù)套間

- (void)addSuiteNamed:(NSString*)suiteName;

將指定的域名插入到接收方的搜索列表中

- (void)removeSuiteNamed:(NSString*)suiteName;

從接收器的搜索列表中移除指定的域名

7钞艇、注冊默認(rèn)值

- (void)registerDefaults:(NSDictionary?*)registrationDictionary;

將指定字典的內(nèi)容添加到注冊域

8、維護(hù)持久域

- (NSArray*)persistentDomainNames API_DEPRECATED("Not recommended", macos(10.0,10.9), ios(2.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0));

返回當(dāng)前持久域名的數(shù)組(不推薦使用)

- (nullableNSDictionary?*)persistentDomainForName:(NSString*)domainName;返回指定域默認(rèn)值的字典表示形式

- (void)setPersistentDomain:(NSDictionary?*)domain forName:(NSString*)domainName;

為指定的持久域設(shè)置字典

- (void)removePersistentDomainForName:(NSString*)domainName;

從用戶的默認(rèn)值中移除指定的持久域的內(nèi)容

9豪硅、維護(hù)易失性域

volatileDomainNames

易失性域名

- (NSDictionary?*)volatileDomainForName:(NSString*)domainName;

返回指定的易失性域的字典

- (void)setVolatileDomain:(NSDictionary?*)domain forName:(NSString*)domainName;

為指定的易失性域設(shè)置字典

- (void)removeVolatileDomainForName:(NSString*)domainName;

從用戶的默認(rèn)值中移除指定的易失性域

10哩照、訪問托管環(huán)境密鑰

- (BOOL)objectIsForcedForKey:(NSString*)key;

返回一個布爾值,該值指示指定密鑰是否由管理員管理

- (BOOL)objectIsForcedForKey:(NSString*)key inDomain:(NSString*)domain;

返回一個布爾值懒浮,該值指示指定域中的密鑰是否由管理員管理

11飘弧、域

NSString * const NSGlobalDomain

由所有應(yīng)用程序所看到的默認(rèn)值組成的域(全局域)

NSString * const NSArgumentDomain;

從應(yīng)用程序的參數(shù)解析默認(rèn)值組成的域(參數(shù)域)

NSString * const NSRegistrationDomain;

由一組臨時缺省值組成的域,其值可以由應(yīng)用程序設(shè)置砚著,以確保搜索始終是成功的(注冊域)

12次伶、通知

NSUserDefaultsSizeLimitExceededNotification

當(dāng)用戶默認(rèn)數(shù)據(jù)中存儲更多數(shù)據(jù)時

NSUbiquitousUserDefaultsNoCloudAccountNotification

當(dāng)設(shè)置了云默認(rèn)時,但沒有登錄iCloud用戶

NSUbiquitousUserDefaultsDidChangeAccountsNotification

當(dāng)用戶更改主iCloud帳戶時

NSUbiquitousUserDefaultsCompletedInitialSyncNotification

發(fā)布時赖草,默認(rèn)完成下載數(shù)據(jù)学少,無論是第一次設(shè)備連接到一個iCloud帳戶剪个,或當(dāng)用戶切換他們的主要iCloud帳戶

NSUserDefaultsDidChangeNotification

在當(dāng)前進(jìn)程中更改用戶默認(rèn)值時發(fā)布

13秧骑、遺棄的方法

+ (void)resetStandardUserDefaults;

釋放標(biāo)準(zhǔn)用戶默認(rèn)值并將其設(shè)置為零(不推薦使用)

- (nullableid)initWithUser:(NSString*)usernameAPI_DEPRECATED("Use -init instead", macos(10.0,10.9), ios(2.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0));

用應(yīng)用程序和當(dāng)前用戶的默認(rèn)值初始化用戶默認(rèn)對象,相當(dāng)于- (instancetype)init方法(不推薦使用)

- (BOOL)synchronize;

等待默認(rèn)數(shù)據(jù)庫的任何掛起的異步更新并返回(不推薦使用)

14扣囊、遺棄的鍵值

日期和時間信息:

FOUNDATION_EXPORT NSString * const NSAMPMDesignation NS_DEPRECATED(10_0, 10_5, NA, NA);

用于指定打印上午和下午指定名稱的值的鍵乎折,它影響使用%P格式說明符的字符串

FOUNDATION_EXPORT NSString * const NSDateFormatString NS_DEPRECATED(10_0, 10_5, NA, NA);

格式化字符串的鍵,它指定如何使用日期格式說明符打印日期

FOUNDATION_EXPORT NSString * const NSDateTimeOrdering NS_DEPRECATED(10_0, 10_5, NA, NA);

字符串中指定如何在日期字符串中使用模糊數(shù)的鍵

FOUNDATION_EXPORT NSString * const NSEarlierTimeDesignations NS_DEPRECATED(10_0, 10_5, NA, NA);

表示過去時間的字符串?dāng)?shù)組的鍵

FOUNDATION_EXPORT NSString * const NSHourNameDesignations NS_DEPRECATED(10_0, 10_5, NA, NA);

識別時間的字符串的鍵

FOUNDATION_EXPORT NSString * const NSLaterTimeDesignations NS_DEPRECATED(10_0, 10_5, NA, NA);

表示未來時間的字符串?dāng)?shù)組的鍵

FOUNDATION_EXPORT NSString * const NSMonthNameArray NS_DEPRECATED(10_0, 10_5, NA, NA);

用于指定月份名稱的值的鍵侵歇,它影響使用%B格式說明符的字符串

FOUNDATION_EXPORT NSString * const NSNextDayDesignations NS_DEPRECATED(10_0, 10_5, NA, NA);

表示今天后一天的字符串?dāng)?shù)組的鍵

FOUNDATION_EXPORT NSString * const NSNextNextDayDesignations NS_DEPRECATED(10_0, 10_5, NA, NA);

表示后天的字符串?dāng)?shù)組的鍵

FOUNDATION_EXPORT NSString * const NSPriorDayDesignations NS_DEPRECATED(10_0, 10_5, NA, NA);

表示今天前一天的字符串?dāng)?shù)組的鍵

FOUNDATION_EXPORT NSString * const NSShortDateFormatString NS_DEPRECATED(10_0, 10_5, NA, NA);

用于指定日期縮寫的格式字符串的鍵

FOUNDATION_EXPORT NSString * const NSShortWeekDayNameArray NS_DEPRECATED(10_0, 10_5, NA, NA);

一個字符串?dāng)?shù)組的鍵骂澄,它指定一周中的縮寫,影響使用%A格式說明符的字符串

FOUNDATION_EXPORT NSString * const NSShortMonthNameArray NS_DEPRECATED(10_0, 10_5, NA, NA);

用于指定月份的縮寫的字符串?dāng)?shù)組的鍵惕虑,它影響使用%B格式說明符的字符串

FOUNDATION_EXPORT NSString * const NSShortTimeDateFormatString NS_DEPRECATED(10_0, 10_5, NA, NA);

用于指定時間和日期縮寫的格式字符串的鍵

FOUNDATION_EXPORT NSString * const NSThisDayDesignations NS_DEPRECATED(10_0, 10_5, NA, NA);

一個字符串?dāng)?shù)組的鍵坟冲,它指定了這一天的名稱

FOUNDATION_EXPORT NSString * const NSTimeDateFormatString NS_DEPRECATED(10_0, 10_5, NA, NA);

用于指定如何打印日期的值的鍵,它影響使用格式說明符%c溃蔫、%x或%x的字符串

FOUNDATION_EXPORT NSString * const NSTimeFormatString NS_DEPRECATED(10_0, 10_5, NA, NA);

用于指定打印日期的格式字符串的鍵

FOUNDATION_EXPORT NSString * const NSWeekDayNameArray NS_DEPRECATED(10_0, 10_5, NA, NA);

用于指定星期數(shù)名稱的字符串?dāng)?shù)組的鍵健提,它影響使用%A格式說明符的字符串

FOUNDATION_EXPORT NSString * const NSYearMonthWeekDesignations NS_DEPRECATED(10_0, 10_5, NA, NA);

一個字符串?dāng)?shù)組的鍵,它指定當(dāng)前區(qū)域中的月份伟叛、月份和星期的單詞

數(shù)值信息:

FOUNDATION_EXPORT NSString * const NSCurrencySymbol NS_DEPRECATED(10_0, 10_5, NA, NA);

指定用于表示該語言中貨幣的符號的字符串

FOUNDATION_EXPORT NSString * const NSDecimalSeparator NS_DEPRECATED(10_0, 10_5, NA, NA);

指定小數(shù)分隔符的字符串

FOUNDATION_EXPORT NSString * const NSThousandsSeparator NS_DEPRECATED(10_0, 10_5, NA, NA);

為十進(jìn)制數(shù)的數(shù)千個位置指定分隔符的字符串

FOUNDATION_EXPORT NSString * const NSDecimalDigits NS_DEPRECATED(10_0, 10_5, NA, NA);

字符串私痹,它標(biāo)識除了或代替ASCII數(shù)字的小數(shù)位數(shù)

FOUNDATION_EXPORT NSString * const NSInternationalCurrencyString NS_DEPRECATED(10_0, 10_5, NA, NA);

遵循ISO 4217標(biāo)準(zhǔn)的包含三個字母縮寫的字符串

FOUNDATION_EXPORT NSString * const NSPositiveCurrencyFormatString NS_DEPRECATED(10_0, 10_5, NA, NA);

指定貨幣值時如何打印正數(shù)的格式字符串

FOUNDATION_EXPORT NSString * const NSNegativeCurrencyFormatString NS_DEPRECATED(10_0, 10_5, NA, NA);

指定表示貨幣值時如何打印負(fù)數(shù)的格式字符串

案例:

//獲取NSUserDefaults對象

NSUserDefaults?*defaults =?[NSUserDefaults?standardUserDefaults];

//設(shè)置指定的默認(rèn)鍵的值,TestMapTypePrefKey為指定的鍵??

1、設(shè)置指定的默認(rèn)鍵的值

[defaults?setObject:字符型?forKey:@"TestMapTypePrefKey"];??

2紊遵、整數(shù)值存儲

[defaults?setInteger:?整數(shù)值?forKey:@"TestMapTypePrefKey"];?

3账千、單精度浮點值存儲

[defaults?setFloat:?單精度浮點值?forKey:@"TestMapTypePrefKey"];??

4、雙精度浮點值存儲

[defaults?setDouble: 雙精度浮點值?forKey:@"TestMapTypePrefKey"];??

5暗膜、布爾值存儲

[defaults?setBool:?布爾值?forKey:@"TestMapTypePrefKey"];??

6匀奏、URL存儲

[defaults?setURL:?NSURL值?forKey:@"TestMapTypePrefKey"];

//同步存儲(不建議使用)

[[NSUserDefaults standardUserDefaults] synchronize];

//獲取鍵值

1学搜、返回與指定鍵關(guān)聯(lián)的對象(ReturnType可以是NSDictionary攒射、NSString等)

ReturnType *defaults = [[NSUserDefaults standardUserDefaults] objectForKey:@"TestMapTypePrefKey"];

2、返回與指定鍵關(guān)聯(lián)的字符串

NSString *defaults?= [[NSUserDefaults standardUserDefaults] stringForKey:@"TestMapTypePrefKey"];

3恒水、返回與指定鍵關(guān)聯(lián)的數(shù)組

NSArray *defaults?= [[NSUserDefaults standardUserDefaults]?arrayForKey:@"TestMapTypePrefKey"];

4会放、返回與指定鍵關(guān)聯(lián)的字典對象

NSDictionary?*defaults?= [[NSUserDefaults standardUserDefaults]?dictionaryForKey:@"TestMapTypePrefKey"];

5、返回與指定鍵關(guān)聯(lián)的數(shù)據(jù)對象

NSData?*defaults?= [[NSUserDefaults standardUserDefaults]?dataForKey:@"TestMapTypePrefKey"];

6钉凌、返回與指定鍵關(guān)聯(lián)的整數(shù)值

NSInteger defaults?= [[NSUserDefaults standardUserDefaults]?integerForKey:@"TestMapTypePrefKey"];

7咧最、返回與指定鍵關(guān)聯(lián)的單精度浮點值

float?defaults?= [[NSUserDefaults standardUserDefaults]?floatForKey:@"TestMapTypePrefKey"];

8、返回與指定鍵關(guān)聯(lián)的雙精度浮點值

double?defaults?= [[NSUserDefaults standardUserDefaults]?doubleForKey:@"TestMapTypePrefKey"];

9御雕、返回與指定鍵關(guān)聯(lián)的布爾值

BOOL?defaults?= [[NSUserDefaults standardUserDefaults]?boolForKey:@"TestMapTypePrefKey"];

10矢沿、返回與指定鍵關(guān)聯(lián)的URL

NSURL *defaults?= [[NSUserDefaults standardUserDefaults]?URLForKey:@"TestMapTypePrefKey"];

11、返回包含搜索列表中域中所有鍵值對的聯(lián)合的字典

NSDictionary*?defaults?=?[[NSUserDefaults?standardUserDefaults]?dictionaryRepresentation];?

//移除鍵值

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"TestMapTypePrefKey"];

以上是對NSUserDefaults的一點整理酸纲,若有不對捣鲸,請各位大神指正。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末闽坡,一起剝皮案震驚了整個濱河市栽惶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疾嗅,老刑警劉巖外厂,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異代承,居然都是意外死亡汁蝶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門论悴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掖棉,“玉大人,你說我怎么就攤上這事膀估♂:ィ” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵玖像,是天一觀的道長紫谷。 經(jīng)常有香客問我齐饮,道長,這世上最難降的妖魔是什么笤昨? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任祖驱,我火速辦了婚禮,結(jié)果婚禮上瞒窒,老公的妹妹穿的比我還像新娘捺僻。我一直安慰自己,他們只是感情好崇裁,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布匕坯。 她就那樣靜靜地躺著,像睡著了一般拔稳。 火紅的嫁衣襯著肌膚如雪葛峻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天巴比,我揣著相機(jī)與錄音术奖,去河邊找鬼。 笑死轻绞,一個胖子當(dāng)著我的面吹牛采记,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播政勃,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼唧龄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了奸远?” 一聲冷哼從身側(cè)響起既棺,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎然走,沒想到半個月后援制,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戏挡,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡芍瑞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了褐墅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拆檬。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖妥凳,靈堂內(nèi)的尸體忽然破棺而出竟贯,到底是詐尸還是另有隱情,我是刑警寧澤逝钥,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布屑那,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏持际。R本人自食惡果不足惜沃琅,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜘欲。 院中可真熱鬧益眉,春花似錦、人聲如沸姥份。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澈歉。三九已至展鸡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間埃难,已是汗流浹背娱颊。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留凯砍,地道東北人箱硕。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像悟衩,于是被迫代替她去往敵國和親剧罩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

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

  • 歡迎關(guān)注公眾號: CodeReview 關(guān)于NSUserDefaults首先要看蘋果官方的定義 NSUserDef...
    sellse閱讀 79,251評論 16 169
  • 關(guān)于NSUserDefaults的一些原理 什么是NSUserDefaults對于應(yīng)用來說座泳,每個用戶都有自己的獨特...
    Keizo閱讀 2,332評論 0 0
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 29,321評論 8 265
  • 發(fā)現(xiàn)寫博客想寫明白也是一件不容易的事情惠昔。 這次拿YYKIt 源碼 分析分析。希望這次能寫的更好些挑势。 YYKit 系...
    充滿活力的早晨閱讀 6,544評論 4 16
  • 感受宗教的力量,上帝與科學(xué)同在!不要想象是達(dá)芬奇密碼前傳.單單就這一步來看的話就已經(jīng)非常不錯了!
    四維gz閱讀 171評論 0 0