OC-Foundation

Foundation 框架是其他所有iOS框架的基礎(chǔ)

  • 包含了很多開發(fā)中常用的數(shù)據(jù)類型
    • 結(jié)構(gòu)體
    • 枚舉
  • 要想使用Foundation中的數(shù)據(jù)類型,包含它的主文件即可#import <Foundation/Foundation.h>

1. 結(jié)構(gòu)體 常用 NSRange CGPoint CGSize CGRect

  • NSRange
typedef struct _NSRange{
    NSUInteger location;
    NSUInteger length;
} NSRange;

NSRange r = {2, 3}; // 不用
NSRange r2 = {.location = 2, .length = 3}; // 不用

NSRange r3 = NSMakeRange{2, 3}; // 掌握 !s厦伞!

NSString *str = @"VampireJune";

// 查找某個(gè)字符串在 str 中的范圍
// 如果找不到辟宗,length = 0则剃,location = NSNotFound == -1
NSRange r4 = [str rangeOfString:@"June"];
NSLog(@"loc = %ld, len = %ld", r4.location, r4.length);

  • NSPoint == CGPoint (跨平臺的(Mac 和 iOS),只用這個(gè)) 表示一個(gè)點(diǎn)的位置
struct CGPoint{
    CGFloat x;
    CGFloat y;
};

typedef struct CGPoint CGPoint;

CGPoint p = NSMakePoint(10, 10);
// 最常用的方法 CGPointMake
NSPoint p1 = CGPointMake(20, 20);

// 表示原點(diǎn)
CGPointZero == CGPointMake(0, 0);
// 還有 CGSizeZero挎挖, CGRectZero

// 使用這些函數(shù)的前提是添加 CoreGraphics 框架
// 比較兩個(gè)點(diǎn)是否相同 (x, y)
BOOL B = CGPointEqualToPoint(CGPointMake(20, 20),CGPointMake(20, 20))
// 還有 CGSizeEqualToSize,CGRectEqualToRect
  • NSSize == CGSize 表示UI元素尺寸
NSSize  s  = CGSizeMake(20, 20);
NSSize  s1 = NSMakeSize(20, 20);
CGSize  s2 = NSMakeSize(20, 20);

struct CGSize{
    CGFloat width;
    CGFloat height;
}

typedef struct CGSize CGSize;
  • NSRect == CGRect 代表二維平面中的某個(gè)物體的位置和尺寸
struct CGRect{
    CGPoint origin;
    CGSize  size;
};
 
CGRect  r1 = CGRectMake(0, 0, 100, 20);
// 超麻煩
NSLog(@"x = %f, y = %f, width = %f, height = %f", 
r1.origin.x, r1.origin.y, r1.size.width, r1.size.height);

// 將結(jié)構(gòu)體轉(zhuǎn)為字符串
// NSString *st = NSStringFromRect(r1);
NSLog(@"%@",st);

// 還有NSStringFromPoint, NSStringFromSize


CGRect myRect (CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
    CGRect rect;
    rect.origin.x = x;
    rect.origin.y = y;
    rect.size.width = width;
    rect.size.height = height;

    return rect;
} 

// 多種寫法
CGRect  r2 = {{0, 0}, {100, 20});
CGRect  r3 = {p, s);
CGRect  r3 = {CGPointZero, CGPointMake(20, 20)};

// 使用這個(gè)函數(shù)的前提是添加 CoreGraphics 框架
// 判斷一個(gè)矩形范圍是否包含坐標(biāo)20 ,20的點(diǎn)
CGRectContainsPoint(CGRectMake(0, 0, 100, 20),CGPointMake(20, 20));

2. 常用類 NSString NSArray NSSet NSDictionary NSDate NSObject

  • NSString
NSString : 不可變字符串
NSMutableString : 可變字符串

NSString *s1 = @"VampireJune";

NSString *2 = [[NSString alloc] initWithFormat:@"is %d",10];

// 類方法創(chuàng)建 字符串
[NSString stringWithFormat:@"is %d",10];

// C字符串 --> OC字符串  
NSString *s3 = [[NSString alloc] initWithUTF8String:"VampireJune"];

// OC字符串 --> C字符串
const char *cs = [s3 UTF8String];

// 從文件中讀取字符串
// NSUTF8StringEncoding 用到中文就可以用這種編碼
NSString *s4 = [[NSString alloc] initWithContentsOfFile:"/絕對路徑" encoding:NSUTF8StringEncoding error:nil];


// URL : 資源路徑 
// 協(xié)議頭 : //路徑(file://、ftp://)
NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop....."];

// 類方法
[NSURL urlWithString:@"file:///Users/apple/Desktop....."];

// 省去了協(xié)議頭
[NSURL fileURLWithPath:@"/Users/apple/Desktop....."];


NSString *s5 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

// 一般都會有一個(gè)類方法跟對象方法配對

// 字符串導(dǎo)出到文件
// atomically : 原子性操作谎仲,
  * YES,當(dāng)文件寫了部分失敗了艺智,這個(gè)文件不會創(chuàng)建
  * NO ,當(dāng)文件寫了部分失敗了,這個(gè)文件還會創(chuàng)建
[@"Vampire\nJune" writeToFile:@"文件路徑" atomically:YES encoding:NSUTF8StringEncoding error:nil];

// 不可變字符串后拼接一個(gè)字符串夭问,返回一個(gè)新字符串對象
NSString *s6 = [NSString stringByAppendingString:@"..."];
  • NSMutableString 可變字符串 繼承自 NSString
// 拼接內(nèi)容到 s1 的后面
[s1 appendString:@"..."];

// 刪除 Range 的內(nèi)容 VampireJune
NSRange ra = [s1 rangeOfString:@"VampireJune"];
[s1  deleteCharactersInRange: ra];

3. 集合類 NSArray NSSet NSDictionary

  • NSArray
// OC數(shù)組只能存放 OC 對象评甜,不能存放 非OC對象類型,如,int、struct捕犬、enum等跷坝,不能存放 nil 值

// 創(chuàng)建不可變數(shù)組
// nil 是數(shù)組元素結(jié)束的標(biāo)記 
NSArray *array = [NSArray arrayWithObjects:@"Vampire",@"June",nil];

// 編譯器特性,快速創(chuàng)建OC數(shù)組
NSArray  *array1 = @[@"Vampire",@"June"];

// 獲取數(shù)組的個(gè)數(shù)
[array count]; == array.count

// 拿取位置 1 的元素
[array objectAtIndex:1]; == array[1];(編譯器特性碉碉,轉(zhuǎn)成前面代碼)

遍歷 1
Person *p = [[Person alloc] init];
NSArray  *array = @[p,@"June"];

for (int i = 0; i < array.count; i++)
{
    NSLog(@"%@", array[i]);
}

遍歷 2 快速遍歷
for (id obj in array)
{
    // 找出 obj 元素在數(shù)組中的位置
    NSUInteger i = [array indexOfObject:obj];

    NSLog(@"%@ -- %ld", obj, i);

    if(i == 1)
    {
        // 停止遍歷柴钻,退出循環(huán)
        break;

///** 注  break 只用在 switch語句 和 for循環(huán)
    }
}

遍歷 3 block遍歷
[array enumerateObjectsUsingBlock:

// 每遍歷到一個(gè)元素,就會調(diào)用一次 block
// 并且把當(dāng)前元素和索引位置當(dāng)做參數(shù)傳給 block
^(id obj, NSUInteger idx, BOOL *stop)
{
    if(idx == 1)
    {
        // 停止遍歷
        *stop = YES;
    }
}];

遍歷 3 block遍歷 的本質(zhì) 解釋

void ^(myBlock)(id, NSUInteger, BOOL *) = ^(id obj, NSUInteger idx, BOOL *stop)
{

}

for (int i = 0; i < array.count; i++)
{
    // 用來標(biāo)記是否需要停止遍歷
    BOOL isStop = NO;

    // 取出元素
    id obj = array[i];

    myBlock(obj, i, &isStop);

    if(isStop)
    {
        break;
    }
}

  • NSMutableArray 可變數(shù)組 繼承自 NSArray
NSMutableArray *array = [NSMutableArray array];

[array addObject:]; // 添加元素

// 錯(cuò)誤  [array addObject:nil];

[array removeObject:]; // 刪除元素
  • 集合的內(nèi)存管理 (MRC里)
NSMutableArray *array = [NSMutableArray array];
Person *p = [[Person alloc] init];

// 當(dāng)把一個(gè)對象添加到集合中時(shí)垢粮,這個(gè)對象會做一次 retain 操作贴届,計(jì)數(shù)器會 +1
// 當(dāng)把一個(gè)對象從集合中移除時(shí),這個(gè)對象會做一次 release 操作足丢,計(jì)數(shù)器會 -1
[array addObject:p];

[p release];

// 當(dāng)一個(gè)集合被銷毀時(shí)粱腻,會對集合里面的所有對象做一次 release,里面的所有對象的計(jì)數(shù)器會 -1
[array release];

// 泛型 指定數(shù)組類型
@property (nonatomic, strong) NSMutableArray <NSString *> *names;
  • NSSet NSMutableSet 無順序的集合
NSSet *s = [NSSet setWithObjects:@"Vampire",@"June",nil];

[s anyObject]; // 隨機(jī)取出一個(gè)元素

NSMutableSet *s2 = [NSMutableSet set];
  • NSSetNSArray 的對比

    • 共同點(diǎn)
      • 都是集合斩跌,都能存放多個(gè)OC對象
      • 只能存放OC對象绍些,不能存放非OC對象類型(基本數(shù)據(jù)類型:intchar耀鸦、float等柬批,結(jié)構(gòu)體枚舉

    -不同點(diǎn)

    • NSArray 有順序
    • NSSet 無順序
  • NSDictionary NSMutableDictionary 字典

    • key ---> value

    • 索引 ---> 文字內(nèi)容

    • 里面存儲的東西都是 鍵值對

      • 不允許相同key,但允許有相同的 value
      • 無順序
NSDictionary *dic = [NSDictionary dictionaryWithObject:@"June" forKey:@"name"];

id obj = [dic objectForKey:@"name"]; 

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"June", @"name", @"地址", @"address",nil ];

NSDictionary *dic = @{@"June": @"name", @"地址": @"address"};
id obj = dic[@"name"];

dic.count // 返回的是 鍵值對 的個(gè)數(shù)


NSMutableDictionary *dic = [NSMutableDictionary dictionary];

[dic setObject:@"jack" forKey:@"name"]; // 添加鍵值對

 // 字典中只允許有一個(gè) key,設(shè)置已經(jīng)有的key,value袖订,原來的會被覆蓋
[dic setObject:@"Vampire" forKey:@"name"];

[dic removeObjectForKey"@"name"]; // 移除鍵值對

// 遍歷字典 1
NSArray *keys = [dic allKeys];
for (int i = 0; i < dic.count; i++)
{
    NSString *key = keys[i];
    id obj *value = dic[key];
    NSLog(@"%@ -- %@",key ,value);
}

// 遍歷字典 2
[dic enumerateKeysAndObjectsUsingBlock:
^(id key, id obj, BOOL *stop)
{
    // 停止遍歷
    *stop = YES;
}];
  • 集合對比
OC JAVA
NSArray List
NSSet Set
NSDictionary Map
1. NSArray\ NSMutableArray
* 有序
* 快速創(chuàng)建(不可變):@[obj, obj1, obj2];
* 快速訪問元素:數(shù)組名[i]

2. NSSet\ NSMutableSet
* 無序

3. NSDictionary\ NSMutableDictionary
* 無序
* 快速創(chuàng)建(不可變):@{key1 : value1, key2 : value2};
* 快速訪問元素:字典名[key]

4. 泛型 指定 key value 類型

@property (nonatomic, strong) NSMutableDictionary <NSString *, NSNumber *> *names;
  • NSNumber
// @10 是將 10 包裝成一個(gè) NSNumber 對象 
NSNumber *num = [NSNumber numberWithInt:10]; == @10

int a = [num intValue];

// 將 age 包裝成一個(gè) NSNumber 對象 
int age = 100; 
[NSNumber numberWithInt:age] == @(age)


// NSNumber 之所以能包裝基本數(shù)據(jù)類型為對象氮帐,是因?yàn)槔^承了 NSValue

NSValue 可以包裝任意值

// 結(jié)構(gòu)體 ---> OC對象
CGPoint p = CGPointMake(10, 10);
// 將結(jié)構(gòu)體轉(zhuǎn)為 Value 對象
NSValue *vv = [NSValue valueWithPoint:p];

// 將 value 轉(zhuǎn)為對應(yīng)的結(jié)構(gòu)體
[vv pointValue];
  • NSDate
// 創(chuàng)建一個(gè)時(shí)間對象 當(dāng)前時(shí)間 0時(shí)區(qū)時(shí)間(北京-東8區(qū))
NSDate *date = [NSDate date];

// 比 date 時(shí)間 晚 5 秒
NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];

// 從 1970 開始到 date2 走過多少秒
NSTimeInterval seconds = [date2 timeIntervalSince1970];

[date2 timeIntervalSinceNow];

// 日期格式化類 NSDateFormatter
NSDateFormatter *f = [[NSDateFormatter alloc] init];
// 設(shè)置格式
// y年  M月  d日  Z時(shí)區(qū)
// m分  s秒  H(24)時(shí)  h(12)時(shí)
f.dateFormat = @"yyyy-MM-dd HH:mm:ss"
[f stringFormDate:date];


// 創(chuàng)建一個(gè)日歷對象
NSCalendar *calendar = [NSCalendar currentCalendar];
// 利用日歷對象 或者 時(shí)間對象 對應(yīng)的 年、月洛姑、日上沐、時(shí)分秒
int unit = NSCalendarUnitYear | NSCalendarUnitMonth;
NSDateComponents *c = [calendar components:unit  formDate:now];

// 打印時(shí)間的要素
NSLog(@"%ld", c.year);

// 利用日歷,比較 時(shí)間 差距 
NSString *time1 = @"2014-04-08 20:50:40";
NSString *time2 = @"2014-04-04 18:45:30";

NSDateFormatter *f = [[NSDateFormatter alloc] init];
f.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSDate *date1 = [f dateFormString楞艾;time1];
NSDate *date2 = [f dateFormString参咙;time2];

// 創(chuàng)建一個(gè)日歷對象
NSCalendar *calendar = [NSCalendar currentCalendar];


int unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;

NSDateComponents *c = [calendar components:unit  formDate:date1 toDate:date2 options0];

NSLog(@"相差%ld年%ld月%ld日%ld時(shí)%ld分%ld秒",c.year, c.month, c.day, c.hour, c.minute, c.second);

5. NSFileManager 用來進(jìn)行常見的文件\文件夾操作

  • NSFileManager 使用了 單例 模式
  • 使用 defaultManager 方法可以獲得單例對象
NSFileManager *mgr = [NSFileManager defaultManager];

// 默認(rèn)不是文件夾,即默認(rèn)是文件
BOOL dir = NO;
// isDirectory 判斷是否是個(gè)文件夾 需要傳 dir 的地址硫眯,可以改變 dir 的值蕴侧,返回值代表 是文件還是文件夾
// 返回值 exist 代表這個(gè)路徑的文件\文件夾是否存在
BOOL exist = [mgr fileExistsAtPath:@"路徑" isDirectory:&dir];

// 獲得文件、文件夾的屬性
NSDictionary *attr = [mgr attributesOfItemAtPath:@"路徑" error:nil];

// 獲得當(dāng)前文件夾下面有哪些內(nèi)容
NSArray *contents = [mgr contentsOfDirectoryAtPath:@"路徑" error:nil];

// 獲得當(dāng)前文件夾下面 所有子路徑
NSArray *contents = [mgr subpathsOfDirectoryAtPath:@"路徑" error:nil];

6. Copy MutableCopy

  • 作用:利用一個(gè)源對象產(chǎn)生一個(gè)副本對象
  • 特點(diǎn):修改源對象的屬性和行為两入,不會影響副本對象
  • 使用:一個(gè)對象可用調(diào)用 copy\mutableCopy 方法類創(chuàng)建一個(gè)副本對象
copy:創(chuàng)建的是不可變副本(如NSString净宵、NSArray、NSDictionary)
> copy : 需要遵守 NSCopying 協(xié)議,實(shí)現(xiàn) copyWithZone: 方法

@protocol NSCopying
- (id)copyWithZone:(NSZone *)zone;
@end
mutableCopy:創(chuàng)建的是可變副本(如可變字符串择葡、可變數(shù)組紧武、可變字典)
> mutableCopy : 需要遵守 NSMutableCopying 協(xié)議
實(shí)現(xiàn) mutableCopyWithZone: 方法
@protocol NSCopying
- (id)mutableCopyWithZone:(NSZone *)zone;
@end
  • 淺復(fù)制(淺拷貝,指針拷貝刁岸,shallow copy)
    • 本質(zhì)是:沒有產(chǎn)生對象
    • 源對象和副本對象是同一個(gè)對象
    • 源對象(副本對象)引用計(jì)數(shù)器 +1脏里,相當(dāng)于做一次 retain 操作
  • 深復(fù)制(深拷貝,內(nèi)容拷貝虹曙,deep copy)

    • 本質(zhì)是:產(chǎn)生對象
    • 源對象和副本對象是不同的兩個(gè)對象
    • 源對象引用計(jì)數(shù)器不變迫横,副本對象計(jì)數(shù)器為1(因?yàn)槭切庐a(chǎn)生的)
  • 只有 源對象副本對象不可變時(shí),才是 淺復(fù)制

  • 其他都是深復(fù)制

7. @property 內(nèi)存管理策略的選擇

  • 1.非ARC

    • copy : 用于 NSString\block (堅(jiān)決不能用可變字符串)
    • retain : 除 NSString\block 以外的OC對象
    • assign : 基本數(shù)據(jù)類型酝碳、枚舉矾踱、結(jié)構(gòu)體(非OC對象),當(dāng)2個(gè)對象相互引用疏哗,一端用 retain呛讲,一端用 assign
  • 2.ARC

    • copy : 用于 NSString\block (堅(jiān)決不能用可變字符串)
    • strong : 除 NSString\block 以外的OC對象
    • weak : 當(dāng)2個(gè)對象相互引用,一端用 strong返奉,一端用 weak
    • assgin : 基本數(shù)據(jù)類型贝搁、枚舉、結(jié)構(gòu)體(非OC對象)

8. 遞歸

  • 1.函數(shù)自己調(diào)自己
  • 2.必須有個(gè)明確的返回值

9. static 在 OC 中的使用

  • static

  • 1.修飾局部變量

    • 讓局部變量只初始化一次
    • 局部變量在程序中只有一份內(nèi)存
    • 并不會改變局部變量的作用域芽偏,僅僅是改變了局部變量的生命周期(只到程序結(jié)束雷逆,才會銷毀)
  • 2.修飾全部變量

    • 全部變量的作用域僅限于當(dāng)前文件
  • 例:#define a 0.5 VS const CGFloat a = 0.5;

  • 像宏一樣,不能改值

  • 有多少使用宏的地方污尉,就會開辟多少臨時(shí)存儲空間

  • 使用 const 膀哲,就只會開辟一個(gè)存儲空間

  • 還可以使用 extern 全局引用

  • 如果引用的是個(gè)常量,最好加一個(gè)被碗,const

  • 例:extern const CGFloat a (編譯階段就能很快發(fā)現(xiàn)某宪,避免修改被 const 修飾的常量,運(yùn)行是崩潰)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锐朴,一起剝皮案震驚了整個(gè)濱河市兴喂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌焚志,老刑警劉巖衣迷,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異娩嚼,居然都是意外死亡蘑险,警方通過查閱死者的電腦和手機(jī)滴肿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門岳悟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事贵少『乔危” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵滔灶,是天一觀的道長普碎。 經(jīng)常有香客問我,道長录平,這世上最難降的妖魔是什么麻车? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮斗这,結(jié)果婚禮上动猬,老公的妹妹穿的比我還像新娘。我一直安慰自己表箭,他們只是感情好赁咙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著免钻,像睡著了一般彼水。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上极舔,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天凤覆,我揣著相機(jī)與錄音,去河邊找鬼姆怪。 笑死叛赚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的稽揭。 我是一名探鬼主播俺附,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼溪掀!你這毒婦竟也來了事镣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤揪胃,失蹤者是張志新(化名)和其女友劉穎璃哟,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喊递,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡随闪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了骚勘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铐伴。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡撮奏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出当宴,到底是詐尸還是另有隱情畜吊,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布户矢,位于F島的核電站玲献,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏梯浪。R本人自食惡果不足惜捌年,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挂洛。 院中可真熱鬧延窜,春花似錦、人聲如沸抹锄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伙单。三九已至获高,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吻育,已是汗流浹背念秧。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留布疼,地道東北人摊趾。 一個(gè)月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像游两,于是被迫代替她去往敵國和親砾层。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

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

  • 該系列主要著重于平時(shí)學(xué)習(xí)中遇到的不理解的知識點(diǎn)贱案,以打磨知識點(diǎn)為主肛炮。沒有一定的順序,遇到不會的就學(xué)宝踪,學(xué)了就按...
    你好12388閱讀 345評論 0 0
  • 我們家向來有喝酒的傳統(tǒng)侨糟,遙記小時(shí)候,印象中的酒場典型何其多瘩燥,記憶深刻的有一個(gè)中風(fēng)已經(jīng)半身不遂的大爺爺秕重,每天必然3頓...
    黑土錢閱讀 156評論 3 4
  • 當(dāng)你能夠享受現(xiàn)實(shí)的安穩(wěn)時(shí), 好好去獲得滋養(yǎng)和滿足厉膀; 當(dāng)你的內(nèi)心的欲望被激活時(shí)溶耘, 給自己機(jī)會去實(shí)現(xiàn)自我套鹅; 當(dāng)你陷入現(xiàn)...
    miss喜子閱讀 216評論 1 1
  • 運(yùn)算符與if &&應(yīng)用if(a>1) {console.log("a="+a);}上面這個(gè)函數(shù)可以寫成 a>1 ...
    _v_xw閱讀 152評論 0 0