国产精品青草久-国产精品情侣愉拍-国产精品区网红主-国产精品区一区二-国产精品热久久-国产精品热热热-国产精品人aⅴ-国产精品人成在线-国产精品人妻人伦-国产精品人人

金喜正规买球

logo Swift編程語言中文教程
文檔金喜正規買球>>Swift編程語言中文教程>>Swift編程語言中文教程(二十一):Swift協議

Swift編程語言中文教程(二十一):Swift協議


本頁包含內容:

Protocol(協議)用于統一方法和屬性的名稱,而不實現任何功能。協議能夠被類,枚舉,結構體實現,滿足協議要求的類,枚舉,結構體被稱為協議的遵循者。

遵循者需要提供協議指定的成員,如屬性,方法,操作符,下標等。

協議的語法

協議的定義與類,結構體,枚舉的定義非常相似,如下所示:

protocol SomeProtocol {
    // 協議內容
}

在類,結構體,枚舉的名稱后加上協議名稱,中間以冒號:分隔即可實現協議;實現多個協議時,各協議之間用逗號,分隔,如下所示:

struct SomeStructure: FirstProtocol, AnotherProtocol {
    // 結構體內容
}

當某個類含有父類的同時并實現了協議,應當把父類放在所有的協議之前,如下所示:

class SomeClass: SomeSuperClass, FirstProtocol, AnotherProtocol {
    // 類的內容
}

屬性要求

協議能夠要求其遵循者必須含有一些特定名稱和類型的實例屬性(instance property)或類屬性 (type property),也能夠要求屬性具有(設置權限)settable 和(訪問權限)gettable,但它不要求屬性是存儲型屬性(stored property)還是計算型屬性(calculate property)。

如果協議要求屬性具有設置權限和訪問權限,那常量存儲型屬性或者只讀計算型屬性都無法滿足此要求。如果協議只要求屬性具有訪問權限,那任何類型的屬性都可以滿足此要求,無論這些屬性是否具有設置權限。

通常前置var關鍵字將屬性聲明為變量。在屬性聲明后寫上{ get set }表示屬性為可讀寫的。{ get }用來表示屬性為可讀的。即使你為可讀的屬性實現了setter方法,它也不會出錯。

protocol SomeProtocol {
    var musBeSettable : Int { get set }
    var doesNotNeedToBeSettable: Int { get }
}

在協議中定義類屬性 (type property)時使用class前綴關鍵字,即使在結構體或者枚舉中類屬性是要求使用static前綴關鍵字:

protocol AnotherProtocol {
    class var someTypeProperty: Int { get set }
}

protocol FullyNamed {
    var fullName: String { get }
}

FullyNamed協議含有fullName屬性。因此其遵循者必須含有一個名為fullName,類型為String的可讀屬性。

struct Person: FullyNamed{
    var fullName: String
}
let john = Person(fullName: "John Appleseed")
//john.fullName 為 "John Appleseed" 

Person結構體含有一個名為fullName的存儲型屬性,完整的遵循了協議。(若協議未被完整遵循,編譯時則會報錯)。

如下所示,Startship類遵循了FullyNamed協議:

class Starship: FullyNamed {
    var prefix: String?
    var name: String
    init(name: String, prefix: String? = nil ) {
        self.anme = name
        self.prefix = prefix
    }
    var fullName: String {
    return (prefix ? prefix ! + " " : " ") + name
    }
}
var ncc1701 = Starship(name: "Enterprise", prefix: "USS")
// ncc1701.fullName == "USS Enterprise"

Starship類將fullName實現為可讀的計算型屬性。它的每一個實例都有一個名為name的必備屬性和一個名為prefix的可選屬性。 當prefix存在時,將prefix插入到name之前來為Starship構建fullName。

方法要求

協議能夠要求其遵循者必備某些特定的實例方法和類方法。協議方法的聲明與普通方法聲明相似,但它不需要方法內容。

注意: 協議方法支持變長參數(variadic parameter),不支持默認參數(default parameter)。

前置class關鍵字表示協議中的成員為類成員;當協議用于被枚舉或結構體遵循時,則使用static關鍵字。如下所示: 像類屬性的要求一樣,協議中定義類方法時也總是使用class關鍵字,即使類方法在枚舉或結構體中實現時要求使用static關鍵字

protocol SomeProtocol {
    class func someTypeMethod()
}

protocol RandomNumberGenerator {
    func random() -> Double
}

RandomNumberGenerator協議要求其遵循者必須擁有一個名為random, 返回值類型為Double的實例方法。(我們假設隨機數在[0,1]區間內)。

LinearCongruentialGenerator類遵循了RandomNumberGenerator協議,并提供了一個叫做線性同余生成器(linear congruential generator)的偽隨機數算法。

class LinearCongruentialGenerator: RandomNumberGenerator {
    var lastRandom = 42.0
    let m = 139968.0
    let a = 3877.0
    let c = 29573.0
    func random() -> Double {
        lastRandom = ((lastRandom * a + c) % m)
        return lastRandom / m
    }
}
let generator = LinearCongruentialGenerator()
println("Here's a random number: \(generator.random())")
// 輸出 : "Here's a random number: 0.37464991998171"
println("And another one: \(generator.random())")
// 輸出 : "And another one: 0.729023776863283"

突變方法要求

能在方法或函數內部改變實例類型的方法稱為突變方法。在值類型(Value Type)(譯者注:特指結構體和枚舉)中的的函數前綴加上mutating關鍵字來表示該函數允許改變該實例和其屬性的類型。 這一變換過程在實例方法(Instance Methods)章節中有詳細描述。

(譯者注:類中的成員為引用類型(Reference Type),可以方便的修改實例及其屬性的值而無需改變類型;而結構體和枚舉中的成員均為值類型(Value Type),修改變量的值就相當于修改變量的類型,而Swift默認不允許修改類型,因此需要前置mutating關鍵字用來表示該函數中能夠修改類型)

注意: 用class實現協議中的mutating方法時,不用寫mutating關鍵字;用結構體,枚舉實現協議中的mutating方法時,必須寫mutating關鍵字。

如下所示,Togglable協議含有toggle函數。根據函數名稱推測,toggle可能用于切換或恢復某個屬性的狀態。mutating關鍵字表示它為突變方法:

protocol Togglable {
    mutating func toggle()
}

當使用枚舉或結構體來實現Togglabl協議時,必須在toggle方法前加上mutating關鍵字。

如下所示,OnOffSwitch枚舉遵循了Togglable協議,On,Off兩個成員用于表示當前狀態

enum OnOffSwitch: Togglable {
    case Off, On
    mutating func toggle() {
        switch self {
        case Off:
            self = On
        case On:
            self = Off
        }
    }
}
var lightSwitch = OnOffSwitch.Off
lightSwitch.toggle()
//lightSwitch 現在的值為 .On

協議類型

協議本身不實現任何功能,但你可以將它當做類型來使用。

使用場景:

  • 作為函數,方法或構造器中的參數類型,返回值類型
  • 作為常量,變量,屬性的類型
  • 作為數組,字典或其他容器中的元素類型

注意: 協議類型應與其他類型(Int,Double,String)的寫法相同,使用駝峰式

class Dice {
    let sides: Int
    let generator: RandomNumberGenerator
    init(sides: Int, generator: RandomNumberGenerator) {
        self.sides = sides
        self.generator = generator
    }
    func roll() -> Int {
        return Int(generator.random() * Double(sides)) +1
    }
}

這里定義了一個名為 Dice的類,用來代表桌游中的N個面的骰子。

Dice含有sides和generator兩個屬性,前者用來表示骰子有幾個面,后者為骰子提供一個隨機數生成器。由于后者為RandomNumberGenerator的協議類型。所以它能夠被賦值為任意遵循該協議的類型。

此外,使用構造器(init)來代替之前版本中的setup操作。構造器中含有一個名為generator,類型為RandomNumberGenerator的形參,使得它可以接收任意遵循RandomNumberGenerator協議的類型。

roll方法用來模擬骰子的面值。它先使用generator的random方法來創建一個[0-1]區間內的隨機數種子,然后加工這個隨機數種子生成骰子的面值。

如下所示,LinearCongruentialGenerator的實例作為隨機數生成器傳入Dice的構造器

var d6 = Dice(sides: 6,generator: LinearCongruentialGenerator())
for _ in 1...5 {
    println("Random dice roll is \(d6.roll())")
}
//輸出結果
//Random dice roll is 3
//Random dice roll is 5
//Random dice roll is 4
//Random dice roll is 5
//Random dice roll is 4

委托(代理)模式

委托是一種設計模式,它允許類或結構體將一些需要它們負責的功能交由(委托)給其他的類型。

委托模式的實現很簡單: 定義協議來封裝那些需要被委托的函數和方法, 使其遵循者擁有這些被委托的函數和方法。

委托模式可以用來響應特定的動作或接收外部數據源提供的數據,而無需要知道外部數據源的類型。

下文是兩個基于骰子游戲的協議:

protocol DiceGame {
    var dice: Dice { get }
    func play()
}

protocol DiceGameDelegate {
    func gameDidStart(game: DiceGame)
    func game(game: DiceGame, didStartNewTurnWithDiceRoll diceRoll:Int)
    func gameDidEnd(game: DiceGame)
}

DiceGame協議可以在任意含有骰子的游戲中實現,DiceGameDelegate協議可以用來追蹤DiceGame的游戲過程。

如下所示,SnakesAndLadders是Snakes and Ladders(譯者注:控制流章節有該游戲的詳細介紹)游戲的新版本。新版本使用Dice作為骰子,并且實現了DiceGame和DiceGameDelegate協議

class SnakesAndLadders: DiceGame {
    let finalSquare = 25
    let dic = Dice(sides: 6, generator: LinearCongruentialGenerator())
    var square = 0
    var board: Int[]
    init() {
        board = Int[](count: finalSquare + 1, repeatedValue: 0)
        board[03] = +08; board[06] = +11; borad[09] = +09; board[10] = +02
        borad[14] = -10; board[19] = -11; borad[22] = -02; board[24] = -08
    }
     var delegate: DiceGameDelegate?
     func play() {
         square = 0
         delegate?.gameDidStart(self)
         gameLoop: while square != finalSquare {
             let diceRoll = dice.roll()
             delegate?.game(self,didStartNewTurnWithDiceRoll: diceRoll)
             switch square + diceRoll {
             case finalSquare:
                 break gameLoop
             case let newSquare where newSquare > finalSquare:
                 continue gameLoop
             default:
             square += diceRoll
             square += board[square]
             }
         }
         delegate?.gameDIdEnd(self)
     }
}

游戲的初始化設置(setup)被SnakesAndLadders類的構造器(initializer)實現。所有的游戲邏輯被轉移到了play方法中。

注意: 因為delegate并不是該游戲的必備條件,delegate被定義為遵循DiceGameDelegate協議的可選屬性

DicegameDelegate協議提供了三個方法用來追蹤游戲過程。被放置于游戲的邏輯中,即play()方法內。分別在游戲開始時,新一輪開始時,游戲結束時被調用。

因為delegate是一個遵循DiceGameDelegate的可選屬性,因此在play()方法中使用了可選鏈來調用委托方法。 若delegate屬性為nil, 則委托調用優雅地失效。若delegate不為nil,則委托方法被調用

如下所示,DiceGameTracker遵循了DiceGameDelegate協議

class DiceGameTracker: DiceGameDelegate {
    var numberOfTurns = 0
    func gameDidStart(game: DiceGame) {
        numberOfTurns = 0
        if game is SnakesAndLadders {
            println("Started a new game of Snakes and Ladders")
        }
        println("The game is using a \(game.dice.sides)-sided dice")
    }
    func game(game: DiceGame, didStartNewTurnWithDiceRoll diceRoll: Int) {
        ++numberOfTurns
        println("Rolled a \(diceRoll)")
    }
    func gameDidEnd(game: DiceGame) {
        println("The game lasted for \(numberOfTurns) turns")
    }
}

DiceGameTracker實現了DiceGameDelegate協議的方法要求,用來記錄游戲已經進行的輪數。 當游戲開始時,numberOfTurns屬性被賦值為0;在每新一輪中遞加;游戲結束后,輸出打印游戲的總輪數。

gameDidStart方法從game參數獲取游戲信息并輸出。game在方法中被當做DiceGame類型而不是SnakeAndLadders類型,所以方法中只能訪問DiceGame協議中的成員。

DiceGameTracker的運行情況,如下所示:

let tracker = DiceGameTracker()
let game = SnakesAndLadders()
game.delegate = tracker
game.play()
// Started a new game of Snakes and Ladders
// The game is using a 6-sided dice
// Rolled a 3
// Rolled a 5
// Rolled a 4
// Rolled a 5
// The game lasted for 4 turns

在擴展中添加協議成員

即便無法修改源代碼,依然可以通過擴展(Extension)來擴充已存在類型(譯者注: 類,結構體,枚舉等)。擴展可以為已存在的類型添加屬性,方法,下標,協議等成員。詳情請在擴展章節中查看。

注意: 通過擴展為已存在的類型遵循協議時,該類型的所有實例也會隨之添加協議中的方法

TextRepresentable協議含有一個asText,如下所示:

protocol TextRepresentable {
    func asText() -> String
}

通過擴展為上一節中提到的Dice類遵循TextRepresentable協議

extension Dice: TextRepresentable {
    cun asText() -> String {
        return "A \(sides)-sided dice"
    }
}

從現在起,Dice類型的實例可被當作TextRepresentable類型:

let d12 = Dice(sides: 12,generator: LinearCongruentialGenerator())
println(d12.asText())
// 輸出 "A 12-sided dice"

SnakesAndLadders類也可以通過擴展的方式來遵循協議:

extension SnakeAndLadders: TextRepresentable {
    func asText() -> String {
        return "A game of Snakes and Ladders with \(finalSquare) squares"
    }
}
println(game.asText())
// 輸出 "A game of Snakes and Ladders with 25 squares"

通過擴展補充協議聲明

當一個類型已經實現了協議中的所有要求,卻沒有聲明時,可以通過擴展來補充協議聲明:

struct Hamster {
    var name: String
    func asText() -> String {
        return "A hamster named \(name)"
    }
}
extension Hamster: TextRepresentabl {}

從現在起,Hamster的實例可以作為TextRepresentable類型使用

let simonTheHamster = Hamster(name: "Simon")
let somethingTextRepresentable: TextRepresentabl = simonTheHamester
println(somethingTextRepresentable.asText())
// 輸出 "A hamster named Simon"

注意: 即時滿足了協議的所有要求,類型也不會自動轉變,因此你必須為它做出明顯的協議聲明

集合中的協議類型

協議類型可以被集合使用,表示集合中的元素均為協議類型:

let things: TextRepresentable[] = [game,d12,simoTheHamster]

如下所示,things數組可以被直接遍歷,并調用其中元素的asText()函數:

for thing in things {
    println(thing.asText())
}
// A game of Snakes and Ladders with 25 squares
// A 12-sided dice
// A hamster named Simon

thing被當做是TextRepresentable類型而不是Dice,DiceGame,Hamster等類型。因此能且僅能調用asText方法

協議的繼承

協議能夠繼承一到多個其他協議。語法與類的繼承相似,多個協議間用逗號,分隔

protocol InheritingProtocol: SomeProtocol, AnotherProtocol {
    // 協議定義
}

如下所示,PrettyTextRepresentable協議繼承了TextRepresentable協議

protocol PrettyTextRepresentable: TextRepresentable {
    func asPrettyText() -> String
} 

遵循``PrettyTextRepresentable協議的同時,也需要遵循TextRepresentable`協議。

如下所示,用擴展為SnakesAndLadders遵循PrettyTextRepresentable協議:

extension SnakesAndLadders: PrettyTextRepresentable {
    func asPrettyText() -> String {
        var output = asText() + ":\n"
        for index in 1...finalSquare {
            switch board[index] {
                case let ladder where ladder > 0:
                output += "▲ "
            case let snake where snake < 0:
                output += "▼ "
            default:
                output += "○ "
            }
        }
        return output
    }
}

在for in中迭代出了board數組中的每一個元素:

  • 當從數組中迭代出的元素的值大于0時,用▲表示
  • 當從數組中迭代出的元素的值小于0時,用▼表示
  • 當從數組中迭代出的元素的值等于0時,用○表示

任意SankesAndLadders的實例都可以使用asPrettyText()方法。

println(game.asPrettyText())
// A game of Snakes and Ladders with 25 squares:
// ○ ○ ▲ ○ ○ ▲ ○ ○ ▲ ▲ ○ ○ ○ ▼ ○ ○ ○ ○ ▼ ○ ○ ▼ ○ ▼ ○

協議合成

一個協議可由多個協議采用protocol<SomeProtocol, AnotherProtocol>這樣的格式進行組合,稱為協議合成(protocol composition)。

舉個例子:

protocol Named {
    var name: String { get }
}
protocol Aged {
    var age: Int { get }
}
struct Person: Named, Aged {
    var name: String
    var age: Int
}
func wishHappyBirthday(celebrator: protocol<Named, Aged>) {
    println("Happy birthday \(celebrator.name) - you're \(celebrator.age)!")
}
let birthdayPerson = Person(name: "Malcolm", age: 21)
wishHappyBirthday(birthdayPerson)
// 輸出 "Happy birthday Malcolm - you're 21!

Named協議包含String類型的name屬性;Aged協議包含Int類型的age屬性。Person結構體遵循了這兩個協議。

wishHappyBirthday函數的形參celebrator的類型為protocol<Named,Aged>??梢詡魅肴我庾裱@兩個協議的類型的實例

注意: 協議合成并不會生成一個新協議類型,而是將多個協議合成為一個臨時的協議,超出范圍后立即失效。

檢驗協議的一致性

使用is檢驗協議一致性,使用as將協議類型向下轉換(downcast)為的其他協議類型。檢驗與轉換的語法和之前相同(詳情查看類型檢查):

  • is操作符用來檢查實例是否遵循了某個協議。
  • as?返回一個可選值,當實例遵循協議時,返回該協議類型;否則返回nil
  • as用以強制向下轉換型。
@objc protocol HasArea {
    var area: Double { get }
}

注意: @objc用來表示協議是可選的,也可以用來表示暴露給Objective-C的代碼,此外,@objc型協議只對類有效,因此只能在類中檢查協議的一致性。詳情查看

class Circle: HasArea {
    let pi = 3.1415927
    var radius: Double
    var area:≈radius }
    init(radius: Double) { self.radius = radius }
}
class Country: HasArea {
    var area: Double
    init(area: Double) { self.area = area }
}

Circle和Country都遵循了HasArea協議,前者把area寫為計算型屬性(computed property),后者則把area寫為存儲型屬性(stored property)。

如下所示,Animal類沒有實現任何協議

class Animal {
    var legs: Int
    init(legs: Int) { self.legs = legs }
}

Circle,Country,Animal并沒有一個相同的基類,所以采用AnyObject類型的數組來裝載在它們的實例,如下所示:

let objects: AnyObject[] = [
    Circle(radius: 2.0),
    Country(area: 243_610),
    Animal(legs: 4)
]

如下所示,在迭代時檢查object數組的元素是否遵循了HasArea協議:

for object in objects {
    if let objectWithArea = object as? HasArea {
        println("Area is \(objectWithArea.area)")
    } else {
        println("Something that doesn't have an area")
    }
}
// Area is 12.5663708
// Area is 243610.0
// Something that doesn't have an area

當數組中的元素遵循HasArea協議時,通過as?操作符將其可選綁定(optional binding)到objectWithArea常量上。

objects數組中元素的類型并不會因為向下轉型而改變,當它們被賦值給objectWithArea時只被視為HasArea類型,因此只有area屬性能夠被訪問。

可選協議要求

可選協議含有可選成員,其遵循者可以選擇是否實現這些成員。在協議中使用@optional關鍵字作為前綴來定義可選成員。

可選協議在調用時使用可選鏈,詳細內容在可選鏈章節中查看。

像someOptionalMethod?(someArgument)一樣,你可以在可選方法名稱后加上?來檢查該方法是否被實現。可選方法和可選屬性都會返回一個可選值(optional value),當其不可訪問時,?之后語句不會執行,并返回nil。

注意: 可選協議只能在含有@objc前綴的協議中生效。且@objc的協議只能被類遵循。

Counter類使用CounterDataSource類型的外部數據源來提供增量值(increment amount),如下所示:

@objc protocol CounterDataSource {
    @optional func incrementForCount(count: Int) -> Int
    @optional var fixedIncrement: Int { get }
}

CounterDataSource含有incrementForCount的可選方法和fiexdIncrement的可選屬性。

注意: CounterDataSource中的屬性和方法都是可選的,因此可以在類中聲明但不實現這些成員,盡管技術上允許這樣做,不過最好不要這樣寫。

Counter類含有CounterDataSource?類型的可選屬性dataSource,如下所示:

@objc class Counter {
    var count = 0
    var dataSource: CounterDataSource?
    func increment() {
        if let amount = dataSource?.incrementForCount?(count) {
            count += amount
        } else if let amount = dataSource?.fixedIncrement? {
            count += amount
        }
    }
}

count屬性用于存儲當前的值,increment方法用來為count賦值。

increment方法通過可選鏈,嘗試從兩種可選成員中獲取count。

  1. 由于dataSource可能為nil,因此在dataSource后邊加上了?標記來表明只在dataSource非空時才去調用incrementForCount`方法。
  2. 即使dataSource存在,但是也無法保證其是否實現了incrementForCount方法,因此在incrementForCount方法后邊也加有?標記。

在調用incrementForCount方法后,Int型可選值通過可選綁定(optional binding)自動拆包并賦值給常量amount。

當incrementForCount不能被調用時,嘗試使用可選屬性``fixedIncrement來代替。

ThreeSource實現了CounterDataSource協議,如下所示:

class ThreeSource: CounterDataSource {
    let fixedIncrement = 3
}

使用ThreeSource作為數據源開實例化一個Counter:

var counter = Counter()
counter.dataSource = ThreeSource()
for _ in 1...4 {
    counter.increment()
    println(counter.count)
}
// 3
// 6
// 9
// 12

TowardsZeroSource實現了CounterDataSource協議中的incrementForCount方法,如下所示:

class TowardsZeroSource: CounterDataSource {
func incrementForCount(count: Int) -> Int {
        if count == 0 {
            return 0
        } else if count < 0 {
            return 1
        } else {
            return -1
        }
    }
}

下邊是執行的代碼:

counter.count = -4
counter.dataSource = TowardsZeroSource()
for _ in 1...5 {
    counter.increment()
    println(counter.count)
}
// -3
// -2
// -1
// 0
// 0
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
欧美人妻羞羞一区二区三区 | 黄色av网 | 欧美综合缴情五月丁香六月婷 | 国产香蕉97碰碰久久人人 | 国产精品对白交换视频 | 国产一区二区三区在线免费观看 | 91精品国产偷窥一区二区 | 国产尤物在线观看视频 | 中文字幕亚洲高清综合 | 99成人国产精品视频 | 午夜亚洲嘿嘿嘿在线观看 | 国产日韩欧美另类视频 | 99国产成人精品视频久爱成疾 | 日本一道本不卡免费 | 黄色成年人视频在线 | 亚洲国产精品一区二区色99 | 日本一道本在线视频 | 欧美高清一区二区三区 | 91大神的探花视频 | 亚洲国产日韩精品在线观看色欲视 | 国产毛片情侣视频 | 99视频精品国产在线视频 | 无码人妻精品一区二区三区夜夜嗨 | 精品国产主播在 | 精品人妻午夜一区二区三区四 | 国产成人精品免费播放视频 | 国产亚洲精品va在线 | 亚洲国产成人精品久久 | 高清在线午夜一区二区亚洲 | 午夜视频在线观看 | 国产av一区二区三区 | 午夜色av大片在线观 | www.狠狠干.com | 国产在线观看精品一区二区三 | 国内揄拍国内精品视 | 午夜视频在线观看免费观看在线观看 | 国精品无码一区二区三区在线蜜臀 | 爱豆传媒免费全集在线看 | 亚洲日本va中文字幕午夜福利 | 九九九日韩精品免费视频 | 午夜精品久久久久久久无码 | 国产成人综合亚洲av小说 | 国内最真实的xxxx人伦 | 精品亚洲a∨无码一区二区三区 | 日韩国产一区 | 国产成人午夜福利在线观看 | 国产精品2025观看久久 | 亚洲国产成人精品无码区99 | 欧洲一卡2 | av无码av无码专区 | 精品成人大胸美女视频在线播放 | 99久久国产热无码精品免费 | 欧美亚洲日韩一区二区 | av天堂热无码手机版 | 欧美疯狂做受xxxxx高潮 | 91制片厂果冻传媒天 | 成人嫩草影院免费观看 | 无码国产精品一区二区免费 | 久久99精品国产 | 国产一级一级毛片真人视频 | 欧美性受xxxx黑人xyx性爽 | 国产欧美精品一区二区三区 | 人生之路在 | 午夜三级中文不卡电影 | 91蜜桃传媒精品久久久一区二 | 激情小说亚 | 日韩亚州欧美在线com91tv | 中文字幕无码中文字幕有码a | 91桃色安卓版下载 | 国产旗袍丝袜在线观看视频 | 精品一区二区三区在线观看 | 色视频ww| 亚洲国产综合精品一区在线播放 | 国产精品观看视频免费完整 | 丰满少妇人妻hd高清大乳 | 国产免费av片在线看 | 91桃色视频| 97精品人妻无码专区在线视频 | 婷婷色爱区综合五月激情 | 97精品一区二区三区在线不卡 | 在线观看国产精品乱码app | 国产在线精品二区 | 国产在线精品一区二区三区 | 国产高清在线 | 日本三级视频在线观看 | 狠狠色综合网站久久久 | 国产伦精品一区二区三区免费 | 国产线路中文字幕 | 99精品国产免费久久国语 | 爱豆传媒免费全集在线观看反转爽剧 | 国产午夜不卡av高清 | 亚洲欧美成人精 | 无码人妻精 | 亚洲另类国产精品无码 | 四虎国产精品成人 | 国产精品69白浆在线观看免费 | 日韩精品一区二区三区免费在线 | 午夜理论片| 少妇被粗大猛进进出出s小说 | 丰满大码的熟女在线视频 | 成人无码av一区二区 | 成年片色大黄全免费网站久久 | 国产猛男猛女超爽免费视频 | 91在线精品秘国产三年 | 国产成人午夜福利高清在线 | 亚洲丰满爆乳肉感无码一区二区三 | 色婷婷久久综合中文久久蜜桃av | 少妇高潮对白在线 | 97久久精品一区二区三区剧情介绍 | 国产一区二区三区免费观看在线 | 亚洲一区在线精品 | 久久91亚洲精品中文字幕奶水 | 精品伊人久久久大香线蕉天堂 | 国产亚洲这里只有精品 | 日韩欧美一区二区高清完整 | 超碰蝌蚪窝 | 日韩亚洲欧美在线 | 91九色在线观看 | 久9成人免费视频在线 | 国产精品成人va在线观看网 | 99久高清 | 亚洲国产区男 | 精品国产乱子伦一 | 国产午夜无码片在线观看 | 中文韩国日本免费不卡五月天成人 | 国产人妖的免 | 精品国产一区二区三国产 | 欧美另类一区二 | 爆乳邻居肉欲 | 日韩免费高清大片在线 | 变态另类国产 | 91在线无码精品秘入口色 | 欧美一区二区三区啪 | 97国产公开精品 | 欧美精品一区二区三区 | 亚洲国产欧美日本韩国中文在线字幕 | 免费无遮挡无码永久在线观看视频 | 99久久99久久精 | 国产精品色一区二区三区 | 国产同事宾馆在线观看 | 无码av中文一二三区 | 国产精品视频自拍一区 | 91香蕉国产线在线观看免费网友评价 | 欧美一区二区三区精品 | 亚洲国产精品视频自拍 | 国产91成人免费网站 | 在线播放无码后入内射少妇 | 欧日韩国产无码专区 | 麻豆国产va免费精品高清在线 | 国产欧美第一页在线观看 | 国产h视频在线观看 | 国产思思精品视频 | 精品国产乱码一区二区三区麻豆 | 成人午夜激情福利动态 | 99精品国产在热2025一级毛片 | 欧美日韩精品一区二区三区四区 | 久草超碰在线 | 欧美熟妇av欧差aa片 | 黄色成年人视频在线 | 国产欧美在线观看精品一区二区 | 久久99精品久久久久久噜噜噜 | 亚洲ⅴ国产v天堂a无码二区 | 在线视频一二三区 | 亚洲一卡一卡二新区乱码无人区二 | 亚洲欧美乱综合图片区小说区 | 亚洲国产天堂αv日本国产 亚洲国产天堂久久综合 | 国产高清无码一区三区二区 | 久久99热狠狠色精品 | 国产精品视频一区二区538 | 亚洲国产香蕉碰碰人人 | 成人久久91 | 亚洲精品天天影视综合网 | 人妻熟妇久久久久久xxx | 精品国产鲁一鲁一区二区更新时间 | 成人免费视屏 | 国产91九色在线 | 91伊人影院 | 禁止18点击进入在线看片尤物 | 亚洲视频中文字幕在线观看 | www夜插内射视频网站 | 午夜av在线播放 | 国精品国产不卡 | 亚洲欧美精品中字久久99 | 国产强被迫伦姧在线观看无码 | 欧美重口另类在线播放二区 | 日韩无人区 | 91午夜精品久久久久精品 | 自拍高清影视无码 | 91视频专区 | 无码无遮拦午夜福利院 | 少妇高潮喷水在线观看 | www毛片 | 国产亚洲欧洲av综合一区二区三区 | 欧洲日韩国 | 丰满的瑜伽老师 | 精品无码久久久久久久久久 | 国产aⅴ久久免费精品 | 欧美一区二区久久精品 | 少妇高潮一区二区三区99 | 国产999久久免费高清 | 91桃色永久免费福利版下载 | 特级丰满少妇一级aa | 成年美女黄网站色奶头大全 | 午夜视频体内射 | 日韩区欧美区中文字幕 | www日韩欧美在线 | 韩国大尺度电影 | 婷婷精品视频在线观看 | 亚洲欧美激情综合第一区 | 亚洲аv天堂手 | 在线看所有av的网站 | 国产亚洲精品无码专区高清 | 国产成人午夜精品免费视频 | 国产精品夜夜春夜夜爽久久 | av中文字幕潮喷在线 | 午夜播放器app2025最新 | 亚洲美女作 | 中文精品字幕电影在线 | 97人妻人人揉人人躁人人 | 国产精品综合一 | 欧美精品成人a在线 | 国产在线观看香蕉视频网 | 91精品人妻少妇无码影院 | 国产熟女一区二区三区五月婷 | 欧美一级黄色片免费看 | 国产精品69毛片高清亚洲 | 韩国床震无遮挡激情高潮 | 国产精品无码二区二区 | 国语对白露脸在线播放 | 亚洲午夜精品一区三区五区97 | 国产精品美女久久久免 | 国产伦精品一区二区三区免费 | 久996视频精品免费观看 | 麻豆91在线 | 午夜无码精品国产片 | 区二三区 | 性欧美xx| 日本精品中文字幕在线播放 | 国产无套粉嫩白浆在线精品 | 国产综合久久久久久蜜桃 | 国产裸拍裸体视频在线观看 | 亚洲免费在线观看 | 日本欧美国产 | 日本高清不卡中文字幕网 | 91久久综合精品 | 日韩高清福利视频在线观看 | 色一情一乱一交一二三区 | 97se亚洲国产综合自在线尤物 | 国产秀色在线www免费观看 | 国产精品高清另类一区二区三区 | 国产不卡福利片在线观看浪潮 | 99精品国产国 | 国产精品成人av无码久久 | 神马午夜福利久久免费观看 | 97精品伊人久久大香线蕉视频 | 国产丰满大乳奶水在线视频 | 日韩精品无码一本二本三本色 | bt天堂www中文在线资源 | 国人国产免费观看av在线 | 韩国无码av片在线观看网站 | 国产香蕉尹人 | 亚洲精选av| 亚洲成av人片无码不卡播放器 | 国产爆初菊一区视频 | 欧美专区一区 | 久本草在线中文字幕 | 高潮国产精品一区二区喷水 | 97久久精品一区二区三区剧情介绍 | av岛国小电影在线观看 | 国产成人综合久久精品推荐 | 国产尤物精品不卡 | 久久国产91精品 | 果冻国产精品麻豆成人av | 国产熟女aa级毛片www | 人妻体内射精一区二区三四 | 欧美一级在线播放 | 狠狠色噜噜狠狠狠888米奇视频 | 国产一区中文字幕 | 一级一片在线播放在线观看 | 精品一区二区三区四区五区六己 | 国产做爰xxxⅹ性视频国 | 亚洲av日韩综合一 | 69一区二三区好的精华液 | 色综合色综合色综合色欲 | 91久久精品国产91久久久久 | 午夜a级理论片左线播放 | 亚洲国产av一区二区三区四区 | 国产区精品一区二区不卡中文 | 精品国产乱码久久久久夜深人妻 | 国产高清无码在线播放 | 91精品国产91久久久 | 91精品国产91久久久久久青草 | 亚洲三级香港三级久久 | 精品国产福利第一区二区三区 | 国产91色综合 | 精品久久香蕉国产线 | 国产最变态调教视频大全 | 国产高清无码一区二区 | 91香蕉国产线在线观看免费网友评价 | 国产亚洲综合久久 | 国产精品一级国产精品片 | 狠狠夜色 | 97久久天天综合色天天综合88 | 精品999久久久一级毛片 | 午夜无码级毛片免费视频 | 欧美大片va欧美在线播放 | 91最新电影电视剧综艺动漫在线观看 | 成人一区二区三区视频 | 中文字幕在线有码高清视频 | 亚洲午夜无码极品久久 | 日韩中文字幕无码 | 激情a∨无 | 欧美性色欧美 | 91精品无码久久久久久久久 | 丰满人妻一区三区 | 91色色无码综合国产 | 日本精品在线亚洲视频看看 | 丰满尤物一区二区三区 | 日本av一区二区三区视频 | 欧美伦理一区二区 | 国产在线无码不卡播孜 | 国产午夜精品理论片久久影院 | 精品无人区无码乱码毛片国产 | 果冻传媒在线视频完整版电影在线 | 天堂网www最新版资源在线 | 亚洲丰满熟女一区二区v | 亚洲中文字幕在线精品2025 | 最新国产自产视频 | 99久久亚洲精品无码毛片 | 成人毛片18女人毛片免费看 | 久久99精品久久久久久无毒不 | 亚洲av永久无码精品秋霞电影 | 在线观看欧美亚洲少妇 | 韩国三级理论无码电影在线观看 | 无码精品少妇 | 无码专区久久综合久中文字幕 | avtt香蕉久久 | 久草免费版官方最新版下载 | 成人一区专区在 | 91在线无码精品秘入口九电影剧情 | 91久久澡人人爽人人添 | 国产精华液:从成分到功效 国产精华液一线二线三线 国产精华最好的产 | 成人午夜视频在线观看 | 成人国产一区二区 | 色综合久久久久久久久久 | 亚洲国产精品成人久久久 | 无码av网址 | 91免费国产视频久久久 | 国产精品无码v在线观看 | 日韩乱码人妻无码中文字幕视频 | 国产乱妇无乱码大黄aa片 | 99久久精品国产一区二区三区 | 一级片免费在 | 欧美一级乱理片免费观看 | 亚洲国产日韩精品二三四区 | 日韩经典午夜福利发布 | 国产一区二区三区精品视频 | 日韩一区二区三区影片 | 99精品视频在线 | 人妻无码久久一区二区三区免费 | 国产成人午夜福利在线视频 | 999国产影院精品影院 | 呦男呦女 | 国产精品国产免费无码专区不 | 无码潮吹无毒不卡 | 色欲av天天a| 欧美高清性色生活片 | 中文字幕精品久久久人妻 | 国产午夜毛片一区二区三区 | 亚洲欧美日韩动漫一区 | av性色av久久无码ai换脸 | 精品国产免费第一区二区 | 国产精品一级无码免费播放 | 精品ⅴa在线观看 | 亚洲国产精品无码久久98蜜桃 | 麻豆国产精品 | 国产在线拍揄自揄视精品不卡 | 亚洲v男人的天堂网址在线 亚洲v男人的天堂网址在线观看 | 国产精品高清另类一区二区三区 | 黄色网站哪里可以看 | 无码国产精品一区二区高潮 | jk白丝极品被co到 | 精品人妻出轨久久 | 欧美日韩三级电影在线观看 | 91精品国产热久久福利 | 欧洲吸奶大片在线看 | 国产在线一区二区三区四区 | 无码精品视频一区二区三区 | 对白精彩久久老熟妇女 | 国产精品视频每日更新 | av在线亚洲欧洲日产一区二区 | 国产精品国产精 | 久久9精品久久久 | 久久99九九99九九精品 | 91久久人 | 日韩av一区二区免费看 | 自拍少妇精品无码 | 99久久人妻无码精品系列蜜桃 | 99久久免费精品国产男女性高 | 国产日产欧产综合 | 国产在线一区二区在线视频 | 二区视频| 日韩内射美女人妻一区二区 | 91精品国产91久久久久久青草 | 黑人好猛厉害爽受不 | 国产亚洲精品线观看 | 日本精品一区二 | 国产va免费精品观看精品 | 爱豆传媒港台综艺 | 国产精品视频自拍 | 国产精品永久久久久久久久久 | 超碰在线观91| 亚洲国产精品无码久久青草 | 国产精品欧美在线另类小说 | 69国产成人综合久久精品 | 亚洲国精产品一二二线 | 亚洲精品一区二区三区四区五区 | 国产91丝袜在线精品 | 激情综合亚洲九月色 | av无码专区 | 国产高清在线视频伊甸园 | 黄视频在线观看无遮挡 | 天堂一区二区三区在线观看 | 精品国产亚洲第一区二区三区 | 高清无码1区2区3区 高清无码不卡视频 | 亚洲精品无码久久久久冒白浆 | 91精品福利资源在线观看 | 国产精品99久久久久人中文网介绍 | av中文字幕网站 | 国产真人无遮挡作爱免费视频 | 日韩高清在线观看 | 国产黄色一级大片 | 亚洲日产?v中文字幕无码偷拍 | 日韩毛片在线 | 国产精品婷婷午夜在线观看 | 国产乱女乱子视频在线播放 | 亚洲国产精久久久久久久 | 在线观看黄色网站wwwcom | 97久久国产露脸精品国产 | 色五月丁香花自拍自偷国产 | 成人欧美| 99热这里国产免费久久 | 国产亚洲人成在线v网站 | 国产免费av片在线无码免费看 | 成人黄色一级毛片久久 | 高清一区二区三区尤物 | 国产色欲色欲色欲.www | 99精品国产热久久婷婷天堂 | 国产精品一级国产精品片 | 麻豆国产在线 | 国产精品一区高清在线观看 | 熟女久久久30p | 久久99视热频国只有精品 | 九九精品久久久久久噜噜 | 国产高潮国产高潮久久久91 | 亚洲熟女一区二区三区 | 精品99精品在 | 人妻日韩欧美综合制服 | 欧美日韩一区欧美人与动物 | 亚洲精品国产一区黑色丝袜 | 高潮在线观看 | 欧美精品香蕉在线观看网 | 偷拍拍自欧美色区另类 | 在线精品动漫一区二区无广告 | 午夜精品视频在线观看 | 精品亚洲aⅴ无码午夜在线观看 | 欧美精品高潮呻吟av久久 | 亚洲电影激情五月激情 | 国产亚洲精品久久 | 99久久精品国产综合一区 | 亚洲av无码一区东京热久久 | 九一传媒制片厂的制作流程 | 人妻被按摩师 | 欧美日韩精品suv | 97色涩| 午夜在线亚洲 | 黄色网页在线观看 | 天天干天天日天天碰 | 精品无人区无码乱码毛片国产 | 在线好吊色视频 | 丰满少妇又爽又紧又丰满在线观 | 欧美日韩一区二区三 | 国产黄色三级三级 | 色综合欧美 | 亚洲精品ⅴ在线观看 | av午夜午夜快憣免费观看 | 国产97超碰在线综合 | 日韩欧美亚洲另类 | 互换人妻中文字幕 | 人人精品午夜视频 | 欧美色欲成人一区二区三区 | 午夜成人app免费观看 | 69成人免费视频无码专区 | 精品少妇人妻av久久免费 | 国产三级精品三级在线观看 | 日韩av一级精品 | 国产午夜福利精品集在线观看 | 亚洲国产精品一区 | 成人一区二区三区影院 | 国产jk福利 | 午夜福利在线观看大片 | 福利网址导航一区在线观看 | 福利一区二区三区 | a毛片免费看 | 亚洲日韩欧美国产 | 东京热久久精品视频 | 麻豆专区| 国产欧美国日产高清视频 | 国产一级一片免费播放放a 国产一级淫片免费大片 | 亚洲午夜精品久久久久久app | 国产一区二区视频在线观看 | 国产精品一区二区在线观看 | 亚洲熟女一区二 | 在线观看国产精品不卡的av | 亚洲日韩在线国内精 | 无码国产福利av私拍 | 偷拍亚洲一区二区三区 | 亚洲国产制服动漫另类 | 精品无码一区二区三区东京热 | 久久88台湾三级香港三级 | 国产suv视频大全 | 岛国大片精品视频免费在线播放 | 亚洲精品分类在看在线观看 | 亚洲国产欧洲综合久久69 | 国产亚洲精品精品精品 | 国产精品区乱淫片人成人 | 国产精品国产免费无码专区不卡 | 日韩午夜影院在线观看 | 91桃色无码国产在线观看二区 | 国产精品99久久免费观看 | 亚洲日韩国精品视频一区二区三区 | 91久久高清国语自产拍 | 午夜精品久久久久久久爽 | 亚洲午夜一区二区三区久久久久 | 国产成人一区二区三区 | 午夜福利视频 | 亚洲av无码专区国产乱码电影 | 91精品国产免费 | 日韩无码高潮喷水 | 91精品欧美一区二区综合在线 | 中文字幕中字幕亚洲 | 国产亚洲精品精品精品 | 91欧美激情一区二区三区成人 | 亚洲国产成人丁香五月激情 | 国产亚洲精品成 | 国产乱人伦偷精品视频aaa | 91麻精品 | 桃色av免费网站 | 日韩午夜精 | 福利一区二区三区四区视频 | 亚洲av无码1区2区久久 | 极品尤物一区二区三区 | 日本欧美一区二区三区在线播放 | 国产a∨国片精品青草社区 国产a∨国片精品一区二区 | 无套内射极品少妇chinese | 国产免费午夜福利757 | 国产aaaaaa影片 | 日本精品在线亚洲视频看看 | 日本xxxx高清色视频在线播放 | 国产一级大片免费视频 | 成人高清图片素材免费下载 | 99精品久久久久久久久久综合 | 国产精品成人一区二区三区电影 | 国产精品人人爽人 | 日韩激情无码免费毛片 | 天天操狠狠操 | 91久久偷偷做嫩草影院 | 97影院午夜在线影国产 | 亚洲国产成人精品无码一区二区 | 欧美久久综合九色 | 国产精品自产拍高潮在线观看 | 成年女人看片永久免费视频 | 国产精品无码久久久久久久久久 | 亚洲一级毛片免观看 | 97人妻碰碰碰久久久久禁片 | 亚洲大片精品永久免费看网站 | 国产成人午夜毛片 | 中文字幕久 | 亚洲国产综合精品一区在线播放 | 成人一级毛片在线观看视频 | 99精品人妻一区二区 | 成人免费无码一区二区三区 | 无套内内射视频网站 | 精品无人区一区二区三区 | av狼论坛电视剧在线观看 | 日本一道在线播放高清 | 99视频精品在线 | 中文字幕乱码免费专区精 | 精品久久久一区无码av野花影视 | 亚洲成在人电 | 91亚洲国产成人久久精品 | 在线观看人成免费视频 | 黄网站在线观看高清免费 | 天美传媒果冻传媒 | 精品青草久久久久福利99 | 亚洲av永久无码精品古装片 | 亚洲成av人 | 97伊人| 精品国产日韩亚洲一区在线 | 91麻豆精品一二三区在线 | 国产午夜福利精品一区二区三区 | 成全高清在线播放电视剧 | 精品特级一级毛片 | 午夜福利理论片高清在线观看 | 国产99久9在线视频 国产99久久 | 国产精品完整版免费 | 中文字幕免费在线 | 国产亚洲vr软件 | 日本一道本不卡免费播放 | 99久久精品国产免费看不卡 | 亚洲日韩欧美成人 | 国产91福利精品免费观看 | 亚洲日本中文字幕在线四区 | 国产在线观看无遮挡无码aⅴ多人 | 色婷婷在| 91看片免费| 国产一区二区三区在线观看91 | 国产免费趣味软件盘点:畅享高清 | 欧美高清视频一区 | 91亚洲精品国产自在现线 | 欧美成人精品第一区 | 九九久久99综合一区二区 | 日本动漫在中国大陆传播分析 | 无人区乱码一线忘忧草 | 亚洲精品在线视频 | 波多野结衣中文字幕一区二区三区 | 国产精品v片在线观看 | 日本成人电影中文字幕 | 国产露出精品一区二区三区91 | 无码午夜福利 | 亚洲导航深夜福利 | 日本一道本不卡免费播放 | 麻豆一区 | 91免费无码国产在线观看 | 爱福利视频网 | 中文无码免费久久久 | 日韩一区二区三区四区区区 | 亚洲另类图区影 | 欧美精品香蕉在线观看网 | 91精品国产综合久久精品色欲 | 日本三级香港 | 97se狠狠狠狠狼鲁亚洲综 | 国产精品无 | 亚洲日韩欧美成人 | 91精品久久久久久 | 99久久免费视频6 | 无码精品人妻一区二区三区影院 | 亚洲一区二区三区免费在线观看 | 欧美成人精品第一区 | 日本欧美一区二区三区乱码 | 最新国产剧高清免vip在线观看 | 日韩av高清播放 | 成人无码免费视频97 | 国产高清在线精品二区一 | 亚洲午夜久久多人 | 精品国产亚洲av麻豆映画 | 91青青草视频在线观看 | 国产精品成人无码视频 | 国产日韩欧美久久一区 | 亚洲精品视频在线播放 | www视频黄色 | 日本久久久久亚洲中字幕 | 97久久精品| 国内免费无码自拍视频网 | 在线观看国产成人av天堂 | 亚洲日韩欧美一区二区三区 | 国产在线视频网站 | 国产91在线精品福利 | jk国产精品福利在线观看 | 亚洲日韩在线观看不卡 | 99ri在线精品视频在线播放 | 国产aⅴ | av免费无码在线观 | 国产乱码一区二区三区 | 中文字幕一区二区 | 欧美熟妇性开放 | 精品一区二区三区自拍图片区 | 亚洲av无码版在线观看 | 97精品国产91久久久久久久 | 日本不卡新2區 | 性一交一 | 日本高清色w | 亚洲av无码专区在线亚 | 亚洲变态欧美另类精品 | 国产精品视频一区国模私拍 | 国产精品亚洲色婷婷99久久精品 | 另类小说 | 国产japanese在线播放 | 91网视频在线观看 | 91老司机精品福利在线 | 国产精品亚洲电影久久成人影院 | 动漫无遮挡h纯肉亚洲资源大片 | 亚洲av无码专区在线观看亚 | 国产91在线视频 | 亚洲av无码一区二区三区在线播放 | 精品人妻系列无码一区二区三区 | 国产美女做受一级视频 | 99国产精品尤物精品视频 | 二区三区视频 | 国产成人亚洲欧美二区综合 | 中文国产成人精品久久不卡 | 精品亚洲一区二区三区在线观看 | 亚洲中文字字幕精品 | 91视频免费版app下载 | 亚洲精品无码观看 | 国产亚洲中文日韩欧美综合网 | 中文字幕久久熟 | 欧美日韩免费一区二区在线观看 | 亚洲av成人无码精品综合网站 | 午夜免费理论片在线看 | 精品人妻人人做人人爽夜夜爽 | 精品无人区一区二区三区在线 | 精品无码不卡中文字幕 | 97超碰国产时青草 | 亚洲一区二区入口 | 午夜免费啪在线观看视频 | 91精品成人国产app下载 | 国产精品自在拍一区二区不卡 | 成人无码区免费a片www | 天天射天天操天天干中文字幕 | 精品成在人线av无码免费看 | 久久超乳爆乳中文字幕 | 东日韩二三区 | 亚洲av本道一区二区三区 | 国产日产久久高清欧美一区ww | 国产国模私拍在线观看 | 精品无码久久久久久国产 | 97精品人妻一区二区三 | 欧美精品日韩精品一卡 | 欧美精品第欧美第12页 | av励志电影 | 91无码麻豆人妻精品1国产软件 | 97国产欧美精品一区 | 国产激情怍 | 亚洲av无码一区二区三区电影 | 日本一区欧美国产日韩 | 国产在线观看免费 | 高潮流白浆潮喷在线播放视频 | 在线无码免费的毛片视频 | 国产在线综合一区二区三区 | 精品动漫中文字幕一区二区三区 | 日本高清视频网站www | 99欧美日本一区二区留学生 | 精品高清国产乱子伦 | 亚洲精品福利在线观看 | 国产一区二区精品久久91 | 欧美日韩激情亚洲国产 | 亚洲精品无码久久久久 | 人人妻碰人人免费 | 97人妻中文字幕免费视频 | 亚洲日韩在线观看不卡 | 国产一本一道久久香蕉 | 在线亚洲男人的天堂a∨ | 在线aⅴ亚洲中文字幕 | www深夜成| 国产综合国产精品 | 97无码人妻福利免费公开在线视频 | 亚洲日本va中文字幕 | 日本视频在线免费观看 | 日韩电影大片手机在线观看 | 日韩欧美在线综 | 91国精产品自偷自偷现象深度解析 | 91亚洲中文字幕在线播放 | 成年人中 | 国产欧美a∨一区二区 | 欧美综合自拍亚洲综合网 | 国产精品无码无片在线观看3d | 色综合伊| 91久久99热青草国产 | 亚洲www永久成人网站 | 亚洲国产在一区二区三区 | 日韩一区二区三区 | 99久久精品免费网站 | 爆乳护士一区二区三区在线播放 | 国产免费伦精品一区二区三区 | 人妻无码在线视频二区 | 91精品国产99久久久久久 | 91干逼网站| 禁止18点击进入在线看片尤物 | 国产精品综合色区在线观看不卡 | 日日夜夜精品77993d | 三级高清久久影视 | 高潮胡言乱语对白清晰国产 | 午夜无码s片在线观看影院 午夜无码不卡中文字幕最新 | 国产区精品 | av在观线观看男人的天堂 | 成人h动漫| 人人电影网| 91最新精品视频在线 | 久久88| 亚洲导航深夜福利 | 成人综合激情另类小说 | 亚洲久悠悠色悠在线播放 | 精品无人区乱码1区2区3区在线 | 亚洲国产精品自在在线观看 | 爆乳护士hd完整版在线播放 | 91精品国产综合久久久久久久 | 精品3d动漫视频一区在线观看 | 日本在线观看视频一区二区 |