精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從C#到Object C轉型開發:分析兩者之間的差異

開發 后端
本隨筆系列主要介紹從一個Windows平臺從事C#開發到Mac平臺開發蘋果開發的一系列感想和體驗歷程,本系列文章是在起步階段逐步積累的,希望帶給大家更好,更真實的轉換歷程體驗。

本隨筆系列主要介紹從一個Windows平臺從事C#開發到Mac平臺開發蘋果開發的一系列感想和體驗歷程,本系列文章是在起步階段逐步積累的,希望帶給大家更好,更真實的轉換歷程體驗。

在上篇《從C#到Object C,循序漸進學習蘋果開發(1)--準備開發賬號和開發環境》介紹了一些基本的轉換感悟和一些基礎的準備工作,還沒有正式真實的介紹Object C和C#的之前差異,我們知道,從一種環境或者一種語言轉換過去另外一種,我們都會做一些對比和理解,這樣可以很容易把我們頭腦的知識進行對接,在這個所有東西日益大同的背景下,我們相信,所有的語言特點都是相通的。

1、面向對象的類

1)類的定義

Object C(下稱OC)和C#都是面向對象的語言,雖然OC比C#古老,起源自C,但是很多特點和C#都很接近了,在C#3.0里面才引入的擴展方法,在OC里面也存在了。

OC和C#都一樣,他們繼承的關系都是單繼承的,沒有C++的那種多重繼承那么復雜,OC很有特點的一個要求就是把接口和實現完全分開,這點是熟悉C#開發的人員必須轉換過來的思路,在OC里面,寫一個類,先寫接口定義,然后再寫實現,它的語法和C#很大不同,但是也很容易理解。

OC的關鍵字一般都是以@符號進行標識,這點和C#的默認保留關鍵字不同,一般看到@interface, @property, @關鍵字,在最新版本的XCode里面,真是發揮到了極致了,包含了很多語法糖,基本上和C#走向了大同,這點在對象的初始化繼續介紹。

OC的類定義放到.h文件里面,實現放到了.m文件里面,如下面是類的接口聲明。

  1. @interface SimpleClass : NSObject  
  2.    
  3. @end 

而類的實現操作如下所示。

  1. #import "SimpleClass.h"  
  2. @implementation SimpleClass  
  3. @end 

上面只是一個演示類的概念,一般情況下,類都有屬性或者方法,因此還需要增加很多東西。

另外OC和C#對比,沒有了命名空間的概念,OC的類為了避免混淆一般通過前綴進行區分,如你看到的IOS基礎類庫,很多帶有NS,UI,CA,等這樣的前綴,就是這個原因。

2)方法的定義

如下面的接口聲明一個方法,方法的定義

  1. @interface XYZPerson : NSObject  
  2. - (void)sayHello;  
  3. @end 

我們看到,上面的方法定義(接口定義)很簡單,這里有一個 - 符號,是用來標識屬于實例方法的,還有一種屬于類級別的方法,用+符號標識,這個加號,類似于C#語言里面的static關鍵字,默認在方法定義為-的實例方法,都是類似于C#里面的public方法了。

這個(void)定義是返回值的標識,C#是不需要括號的void標識無返回值,方法最后需要括號標識。

- (void)sayHello;

這個方法的定義沒有參數因此是這樣寫的,如果方法有多個參數,這個OC就很有意思,我感覺這個是OC里面最有個性的一個地方了。

如果方法如下所示:

- (void) setCaption: (NSString*)input;

類方法的調用是通過空格,而C#通過點進行調用,這點也有所不同,OC通過在一個[]里面空格進行引用,如下所示。

  1. [object method];  
  2. [object methodWithInput:input]; 

剛才定義的sayHello方法,它的調用可能就是如下方式了

[self setCaption:@"Default Caption"];

如果方法的定義為多個參數(也叫多重參數),定義如下。

-(void) setNumerator: (int) n andDenominator: (int) d; 

那么方法的調用就很有意思了。

[frac2 setNumerator: 1 andDenominator: 5]; 

如果還有更多的參數,那么也就一直使用這樣的累加方式,這個有點接近閱讀習慣,呵呵。

3)參數的定義

說完方法的定義和使用,我們介紹下類里面的屬性的定義,我們知道C#里面的屬性定義很簡單了,如

  1. public string Name {get;set;} 

回來看看OC如何定義屬性的,一般在.h的接口定義里,可以這樣定義。

  1. @property NSString *firstName;  
  2. @property NSString *lastName; 

然后在實現類代碼里面,添加它的對應代碼@synthesize的關鍵字

  1. @synthesize firstName, lastName; 

屬性當然也可以指定為只讀的,如下代碼所示

  1. @property (readonly) NSString *fullName; 

另外,我們還需要清楚,屬性默認是線程安全的,也就是atomic,還有它是強類型Strong的。

  1. @interface XYZObject : NSObject  
  2. @property NSObject *implicitAtomicObject;          // atomic by default  
  3. @property (atomic) NSObject *explicitAtomicObject; // explicitly marked atomic  
  4. @end 

在很多地方,我們使用屬性的時候,都不需要指定它的線程安全特性,因為那樣效率更高,一般的屬性定義代碼如下所示。

  1. @property (strong, nonatomic) IBOutlet UILabel *lblName;  
  2. @property (strong, nonatomic) IBOutlet UITextField *txtInput; 

至于是不是所有的屬性都應該指定為Strong,這個肯定不是的,strong的另外一種類型是weak,它是表示弱類型,強類型和弱類型主要是針對ARC來說的,它是引用計數的范疇,Strong相當于原來的retain。

一般情況下,為了避免一些強類型的對象屬性導致出現相互引用的問題,在代理類和數據源對象,還有一些如UITable的對象屬性,他們的屬性定義必須指定為weak的。

#p#

2、對象的類型和初始化工作 

在C#里面,我們知道,它里面包含了有一些基本類型(Primitive type)和一些包裝后的對象類型,如它的基本類型包括string int char float long double decimal等等,它的對應包裝類型有String Int32 Char Single Int64 Double Decimal等等。

在OC里面,同樣也有這樣的情況,OC的基本類型繼承自C語言的基礎類型,包括有int float double char 等基礎類型,也有很多NS開頭的引用類型(或者說包裝類型),如NSString NSNumber NSDate NSData NSValue等等,而很多集合類型NSArray NSMutableArray NSDictionary等都需要添加引用類型的對象。

另外和C#的Object對象類似或者動態類型關鍵字dynamic指定的類型一樣,OC里面包含了一個id的類型,這個是一個不確定的類型,它可以看成是一個任何類型的弱定義。

id類型是一個獨特的數據類型,在概念上,類似javaObject類,可以轉換為任何數據類型。換句話說,id類型變量可以存放任何數據類型的對象。在內部處理上,這種類型被定義為指向對象的指針,實際上是一個指向這種對象的實例變量的指針。需要注意的是id是一個指針,所以在使用id的時候不需要加星號;比如說:id foo=nil;

1)類對象的初始化

我們知道,OC里面很多都是通過alloc init這樣的方式進行初始化,如下面代碼所示。

  1. XYZObject *object = [[XYZObject alloc] init]; 

而C#里面大多數使用new方式進行初始化,其實OC里面,也一樣可以通過new方式進行初始化,不過僅限在默認構造函數的方式進行,如下的代碼是等同于上面的語句的。

  1. XYZObject *object = [XYZObject new]; 

不過好像很多人都習慣用第一種方式初始化對象。

2)字符串的初始化

相信很多人使用OC的時候,第一個印象最深的我覺得可能是NSString類了,這個是和C#的String有點類似,都是固定的字符串對象,如果需要變化類型的字符串對象,C#里面是可以使用StringBuilder,而OC里面可以使用NSMutalbeString,NSMutableString好比一個字符串鏈表,它可以任意的動態在字符串中添加字符串 刪除字符串 指定位置插入字符串,使用它來操作字符串會更加靈活。

字符串的定義和初始化和簡單,我們可以通過下面的方式進行初始化。

  1. NSString *someString = @"Hello, World!"

我們知道,C#也可以使用@字符進行賦值,雖然一般情況使用在多行的情況下,但是在OC,這個@字符不能省略。

其他數據類型初始化,很多都依靠@字符進行,這個@字符可以說是非常強大的,它也可以說是一個很好的語法糖,如下面初始化各種類型的代碼如下(在OC里面,NSNumber可以放置任何引用類型)

  1. NSNumber *myBOOL = @YES;  
  2. NSNumber *myFloat = @3.14f;  
  3. NSNumber *myInt = @42;  
  4. NSNumber *myLong = @42L; 

NSNumber類型可以裝納各種類型,同樣它也可以轉換為其他對應的類型,如下代碼所示

  1. int scalarMagic = [magicNumber intValue];  
  2.     unsigned int scalarUnsigned = [unsignedNumber unsignedIntValue];  
  3.     long scalarLong = [longNumber longValue];  
  4.    
  5.     BOOL scalarBool = [boolNumber boolValue];  
  6.    
  7.     float scalarSimpleFloat = [simpleFloat floatValue];  
  8.     double scalarBetterDouble = [betterDouble doubleValue];  
  9.    
  10.     char scalarChar = [someChar charValue]; 

另外,由于OC里面引入了一個id類型,可以認為它的作用和C# 3.0引入的動態類型相當,它可以在運行時進行確定對象是否具有某個方法,而不會在編譯的時候強制指定。

如下面的代碼編譯通過,運行的時候可能出錯。

  1. id someObject = @"Hello, World!";  
  2. [someObject removeAllObjects]; 

之所以編譯的時候,不檢查它的對象是否有removeAllObject接口方法,是因為這兒的someObjec指定為了id的動態類型,所以編譯器會不檢查它的方法。

3)對象集合的初始化

剛才上面介紹了字符串等各種類型的初始化,很多采用了強大的關鍵字@進行初始化,這個語法糖減少了很多繁瑣的方法調用,對于集合的初始化,尤其這樣。

如果按照傳統的集合定義方式,一般是通過下面的方法。

  1. NSArray *someArray =  
  2.   [NSArray arrayWithObjects:someObject, someString, someNumber, someValue, nil]; 

在里面的集合,最后必須加上一個nil的東西,這個在C#的領域里面是不需要增加這樣的標識的,在Object C里面,如果你要通過arrayWithObjects方法進行構造,必須增加一個這樣的東西,告訴它這個是最后了,如果你把這個放到第二位,那么構造的集合也只有兩個對象了,很奇怪了。

如果采用了強大的@方法構造,一切都和C#相似了,這里你只能佩服它的神奇之處了。

  1. NSArray *someArray = @[firstObject, secondObject, thirdObject]; 

如下面定義一個字符串的集合是這樣的。

  1. NSArray *unsortedStrings = @[@"gammaString", @"alphaString", @"betaString"]; 

在C#里面,我們經常用到了字典對象,這個對象非常方便。當然在OC里面,也肯定會有這樣的東西,畢竟很多語言都會支持的。

這個字典類型也是一個集合類型,它的傳統構造方法如下所示

  1. NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:  
  2.                    someObject, @"anObject",  
  3.              @"Hello, World!", @"helloString",  
  4.                           @42, @"magicNumber",  
  5.                     someValue, @"aValue",  
  6.                              nil]; 

它這個看起來很怪異,添加指點是按照object,key的這樣方式添加的,這個與我們使用C#的習慣有很大的不同哦,而且最后還帶了一個nil的尾巴。

如果采用@構造函數,一切又都清凈了,已經是key,value方式進行存儲,而且不用nil了,如果你添加了nil,那么會出錯的。

  1. NSDictionary *dictionary = @{  
  2.                   @"anObject" : someObject,  
  3.                @"helloString" : @"Hello, World!",  
  4.                @"magicNumber" : @42,  
  5.                     @"aValue" : someValue  
  6.     }; 

集合中,如果取某個對象,那么通過下面的方法進行獲取

  1. NSNumber *storedNumber = [dictionary objectForKey:@"magicNumber"]; 

也可以通過下標括符進行獲取

  1. NSNumber *storedNumber = dictionary[@"magicNumber"]; 

如果是一般的數組集合,可以通過下面方式獲取,這種方式和c#很類似了。

  1. NSNumber *storedNumber = array[0]; 

由于時間和篇幅的問題,關于OC的各種和C#對比的特性,以后繼續介紹,OC里面還涉及很多相關的特點,如擴展方法,協議(類似接口),代碼塊等等內容,以及XCode的各種使用特性,有空繼續介紹。

原文鏈接:http://www.cnblogs.com/wuhuacong/p/3589699.html

責任編輯:林師授 來源: 博客園
相關推薦

2020-05-18 09:22:51

JavaScriptDart 開發

2019-10-21 08:44:54

操作系統GPUCPU

2016-07-08 14:41:28

云計算

2021-03-17 10:51:17

云計算邊緣計算IT技術

2020-11-13 11:49:56

物聯網

2010-11-08 10:20:18

2009-08-27 16:03:31

從c#到c++

2009-03-03 12:54:58

2009-08-26 10:40:39

C# Static H

2009-08-20 18:21:04

GetType方法C# object類

2009-08-20 15:54:48

從C#到C++

2009-09-04 17:34:11

C#CC++

2009-09-04 15:57:49

C#實現漢字之間互換

2021-09-15 12:09:41

CIO疫情IT高管

2009-08-28 15:35:31

C#與VB.net

2009-08-26 18:17:26

C#基于Object解

2009-07-31 15:27:24

C# Object.E

2009-08-28 10:08:02

C#數值類型之間轉換

2011-06-15 15:29:25

Qt C++

2011-04-27 14:35:23

社交游戲手機游戲
點贊
收藏

51CTO技術棧公眾號

国产精品久久久久久久久久久久 | 无吗不卡中文字幕| 国产精品加勒比| 日韩精品一区不卡| 久久性感美女视频| 欧美mv日韩mv国产网站| 37pao成人国产永久免费视频| 成人av毛片| 国产在线一区观看| 91爱爱小视频k| www成人啪啪18软件| 日韩成人久久| 色婷婷激情一区二区三区| 国产精品无码乱伦| 肉丝一区二区| 国产成人在线免费| 国产精品成人一区二区三区吃奶| 91香蕉视频在线播放| 丝袜久久网站| 日韩女优av电影| 欧美日韩大尺度| 青青青草视频在线| 国产精品久久免费看| 国产精品一区二区免费看| 天天干,天天干| 韩国在线一区| 最近2019年好看中文字幕视频| 亚洲v在线观看| 狠狠久久伊人中文字幕| 精品女厕一区二区三区| 中国一级黄色录像| 国产女人在线视频| 久久尤物电影视频在线观看| av免费精品一区二区三区| 中文字幕久久久久| 老司机精品视频网站| 午夜精品久久久久久久久久久久久| 亚洲色图27p| 国产欧美日韩精品一区二区三区| 日韩久久久久久| 99视频在线免费| 美女福利一区二区三区| 图片区小说区区亚洲影院| 黄色一级片国产| 99在线播放| 亚洲精品ww久久久久久p站| 亚洲一区三区| 午夜小视频在线| 国产精品丝袜91| 日韩欧美视频一区二区| 免费av在线电影| 久久久噜噜噜久久中文字幕色伊伊| 国产在线精品一区| 天堂在线观看av| 成人午夜短视频| 国产精品久久久久久久久婷婷| 国内老熟妇对白xxxxhd| 国产精品一区在线| 亚洲综合av影视| 99久久久久成人国产免费| 精品一区二区三区在线观看国产| 国产免费一区二区三区香蕉精| 中文永久免费观看| 久久成人免费网站| 3d动漫精品啪啪一区二区三区免费| 99riav国产| 国产ts人妖一区二区| 国产日韩三区| 激情在线视频| 国产精品电影一区二区三区| 正在播放久久| 色婷婷在线播放| 午夜在线成人av| 国产裸体舞一区二区三区| 欧美日韩国产v| 精品污污网站免费看| 91插插插插插插插插| 一区在线不卡| 亚洲激情国产精品| 色欲狠狠躁天天躁无码中文字幕 | 99久久99九九99九九九| 69成人精品免费视频| www.偷拍.com| 国产图片一区| 一本色道久久88亚洲综合88| 三级在线观看免费大全| 亚洲福利一区| 国产精品jizz在线观看麻豆| 亚洲综合五月天婷婷丁香| 国产精品一级片在线观看| 久久精品午夜一区二区福利| 福利在线播放| 一区二区三区中文字幕电影 | av成人免费网站| 国产综合视频| 国产不卡av在线免费观看| 国产欧美熟妇另类久久久| k8久久久一区二区三区| 五月天亚洲综合小说网| 黄污视频在线观看| 欧美视频精品在线观看| v天堂中文在线| 色综合狠狠操| 26uuu亚洲国产精品| 国产精品视频一二区| 91免费观看在线| 裸体裸乳免费看| 国产精品粉嫩| 欧美精品一区二区三区很污很色的| 偷拍夫妻性生活| 国产精品v一区二区三区| 国产精品久久久久久久久久| 亚洲欧美激情国产综合久久久| 欧美激情综合五月色丁香| 日韩av在线播放不卡| 中文字幕日本一区| 亚洲欧美第一页| 国产无码精品视频| 激情综合色播五月| 日韩中文字幕一区| 九色porny丨国产首页在线| 6080国产精品一区二区| 国产小视频自拍| 亚洲免费中文| 狠狠色综合一区二区| 在线免费观看污| 欧美日韩大陆一区二区| 中文字幕成人动漫| 亚洲一区观看| 久久精品99久久| 黄页网站在线| 欧美sm极限捆绑bd| 久久精品一区二区三| 精久久久久久久久久久| 亚洲成人第一| 成人国产一区| 亚洲最新中文字幕| 波多野结衣在线电影| 久久青草国产手机看片福利盒子| 日韩成人三级视频| 视频一区日韩| 欧美激情精品久久久久久黑人| 亚洲在线精品视频| 国产精品福利在线播放| 91丨九色丨蝌蚪| 欧美wwwww| 91欧美激情另类亚洲| 日本三级视频在线观看| 欧美精品在线视频| 中文字幕av播放| 国产精品1024| 精品一区二区三区无码视频| 亚洲码欧美码一区二区三区| 九九热在线精品视频| www.欧美国产| 亚洲福利国产精品| 丰满大乳奶做爰ⅹxx视频| 国产日韩欧美高清免费| 久久综合一区二区三区| 综合另类专区| 一个人www欧美| 在线观看av大片| 日韩毛片在线免费观看| 一级黄色大片免费看| 在线看片欧美| 国产在线观看一区| av在线日韩| 久久手机免费视频| 空姐吹箫视频大全| 色香蕉久久蜜桃| 国精产品一区一区| 国产69精品久久777的优势| 国产美女网站在线观看| 精品久久视频| 99re在线| 成人勉费视频| www.日本久久久久com.| 丰满人妻熟女aⅴ一区| 欧美日韩在线第一页| 无码人中文字幕| 成人晚上爱看视频| 麻豆传传媒久久久爱| 无需播放器亚洲| 国产原创精品| 亚洲精品tv| 亚洲3p在线观看| av网站大全在线观看| 欧美一级在线免费| 无码日韩精品一区二区| 亚洲另类春色国产| 亚洲av无码一区二区二三区| 久久精品72免费观看| a级黄色一级片| 欧美好骚综合网| 久久99精品国产99久久| 欧美黄色a视频| 91av视频在线观看| av免费在线观看网址| 亚洲久久久久久久久久| 99精品免费观看| 欧美日韩国产精品一区二区三区四区 | 激情中国色综合| 欧美激情一区二区三区久久久| 国产大片在线免费观看| 欧美大黄免费观看| 怡红院成永久免费人全部视频| 午夜久久久久久电影| 中文字幕第69页| 91蝌蚪porny九色| 91精品人妻一区二区三区蜜桃2| 久久一本综合频道| 精品国产av无码一区二区三区| 欧美激情偷拍自拍| 欧美成熟毛茸茸复古| 99精品国产一区二区三区2021| 国产精品久久久久久久久久免费 | 欧美日韩一区二区三区在线| 亚洲黄色三级视频| 一区二区在线看| 三级影片在线观看| 欧美国产日韩亚洲一区| 亚洲欧美在线不卡| 成人免费看的视频| 交换做爰国语对白| 紧缚奴在线一区二区三区| 91av俱乐部| 久久国产精品久久久久久电车| 69sex久久精品国产麻豆| 久久影院100000精品| 日本在线高清视频一区| 一道本一区二区三区| 久久99精品久久久久久久青青日本 | 亚洲大尺度美女在线| 精品久久久无码中文字幕| 欧美精品成人一区二区三区四区| 国产在线一级片| 色欧美片视频在线观看在线视频| 日本高清www免费视频| 亚洲国产cao| 九九九在线视频| 亚洲一区二区精品3399| 毛片aaaaa| 一个色妞综合视频在线观看| 外国一级黄色片| 一区二区在线观看av| 麻豆chinese极品少妇| 一区二区三区在线影院| 九九视频免费看| 亚洲国产视频一区二区| 国产污视频在线观看| 欧美日韩国产激情| 欧美h在线观看| 日韩欧美a级成人黄色| 亚洲免费黄色网址| 欧美综合天天夜夜久久| 伊人精品在线视频| 欧美一区二区在线播放| www.四虎在线观看| 亚洲国产欧美在线成人app | 亚洲高清在线一区| 国产视频精品网| 亚洲va久久| 五月天亚洲综合| 中文字幕一区二区三三 | av在线最新| 国产精品久久久91| 国产一区二区三区免费在线 | 亚洲国产精品精华液网站| 日本在线观看中文字幕| 在线观看成人免费视频| 国产男女无套免费网站| 精品国产1区二区| 黄色片在线免费看| 久久夜色精品国产亚洲aⅴ| 欧美人与牲禽动交com| 青青精品视频播放| 四虎在线精品| 国内成+人亚洲| 久久中文亚洲字幕| 99热亚洲精品| 免费成人美女在线观看.| 俄罗斯女人裸体性做爰| 久久在线观看免费| 国产盗摄一区二区三区在线| 亚洲成人你懂的| 中文字幕 国产| 精品久久久久久久一区二区蜜臀| 青青视频在线观| 美女啪啪无遮挡免费久久网站| 亚洲天堂免费电影| 92看片淫黄大片欧美看国产片| 日韩超碰人人爽人人做人人添| 综合久久国产| 亚洲女同在线| 少妇性l交大片7724com| 国产视频一区在线播放| 久久网中文字幕| 欧美日韩国产欧美日美国产精品| 人成网站在线观看| 日韩视频免费中文字幕| 亚洲欧洲高清| 国产高清在线一区| 日韩三级在线| 国产精品97在线| 成人午夜免费av| 精品国产视频一区二区三区| 色欧美乱欧美15图片| 免费观看国产精品| 久久久电影免费观看完整版| 成人做爰视频www网站小优视频| 7777精品伊久久久大香线蕉语言| 精品少妇av| 国产最新免费视频| 懂色av一区二区夜夜嗨| 性色国产成人久久久精品 | 999久久久久久| 日韩中文娱乐网| 婷婷午夜社区一区| 国产综合动作在线观看| 激情欧美日韩| 香蕉视频在线观看黄| 亚洲天堂免费看| 中文字幕人妻精品一区| 亚洲午夜未删减在线观看 | 日本在线不卡一区| 少妇按摩一区二区三区| 亚洲韩国一区二区三区| 精品乱子伦一区二区| 久久精品国产一区二区三区| 草民电影神马电影一区二区| 欧美激情www| 午夜一区二区三区不卡视频| 亚洲一区二区三区综合| 亚洲成人在线观看视频| 好吊视频一二三区| 久久久久久久一区二区| 国产色噜噜噜91在线精品| 丁香六月激情婷婷| 国产不卡视频一区| 亚欧洲精品在线视频| 精品国产一区a| 国产在线精彩视频| 狠狠色狠狠色综合人人| 性高湖久久久久久久久| 久久久精品人妻无码专区| 日韩欧美在线播放| 九色网友自拍视频手机在线| 日韩女在线观看| 欧美色就是色| 欧美美女一级片| 亚洲美女免费在线| www.热久久| 4438全国成人免费| 狠狠做六月爱婷婷综合aⅴ| 色婷婷狠狠18| 亚洲人成影院在线观看| www.com在线观看| 久久久久久久久久久成人| 欧亚精品一区| www.激情小说.com| 亚洲男同1069视频| 日本精品一区二区在线观看| 91av在线免费观看| 波多野结衣一区| www.成人黄色| 一级女性全黄久久生活片免费| 天天干,天天操,天天射| 日韩av免费看网站| 久久高清精品| 极品白嫩的小少妇| 狠狠躁夜夜躁久久躁别揉| 国产永久免费高清在线观看视频| 国产精品日本精品| 欧美片第1页综合| 国产精品无码一区二区三区免费| 在线观看国产91| 日韩欧美一起| 欧美深深色噜噜狠狠yyy| 久久国产精品色| 日韩高清免费av| 色午夜这里只有精品| 岛国av一区| jizzzz日本| 午夜精品一区二区三区电影天堂| 国产最新视频在线| 99re视频在线观看| 日韩av二区在线播放| 欧美人妻精品一区二区免费看| 亚洲欧美日韩综合| 欧一区二区三区| 国产精品亚洲a| 亚洲欧美一区二区三区孕妇| 色视频在线看| 97se视频在线观看| 日本不卡高清视频| 久久精品国产亚洲av高清色欲 | 污污的网站在线看| 日本在线观看一区| www.日韩av| 国产喷水吹潮视频www|