超碰91资源站-超碰97豆花-超碰97人妻-超碰97人人干-超碰97人人香蕉-超碰97天天操-超碰97在线资源站-超碰97资源站共享-超碰97资源站总站-超碰aa在线91-超碰av操-超碰爱爱

半岛外围网上直营

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

原創|使用教程|編輯:龔雪|2014-06-19 09:33:07.000|閱讀 4525 次

概述:本文為Swift編程語言中文教程第二十一部分,講解協議(Protocol),內容包括:Swift協議的語法(Protocol Syntax)、屬性要求(Property Requirements)、協議類型(Protocols as Types)、協議的繼承(Protocol Inheritance)等。Swift是蘋果公司在WWDC2014發布的一門編程語言,與Objective-C相比,對學習新手比較友好。慧都控件網根據官方教程以及網上中文資源整理了Swift編程語言中文教程,希望幫助想要學習Swift的朋友,由于技術有限,可能有不足的地方,希望大家指正。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

相關鏈接:

本頁包含內容:

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

標簽:Swift

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn


為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
利記足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 真人boyu·博魚滾球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 最大網上PM娛樂城盤口(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規雷火競技官方買球(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 雷火競技權威十大網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) boyu·博魚信譽足球官網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 權威188BET足球網(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 正規188BET足球大全(官方)網站/網頁版登錄入口/手機版登錄入口-最新版(已更新) 国产欧美另类久久精品蜜芽 | 91精选日韩综合永久入口 | 91精品国产自产 | 国产一区在线观看视频网站 | 精品国产欧美日韩在卡在线 | 国产精品成人∨a在线观看 国产精品成人3p一区二区三区 | 国产极品精品免费视频能看 | 国产精品白嫩久久久久久 | 国产狂喷潮在线观看国产片 | av无码精品一区二区久久 | 高清国产无码自拍 | 国产福利一区二区 | 动漫卡通亚洲欧美一区 | 成人av影视在线 | 69国自产在线老师啪不卡 | 国产一区二区三区欧美精品 | 国产成人综合久久精品可下载 | 18禁很色很爽很黄的免费网站 | 国产一区二区高清视频 | 精品国产蜜桃乱码久久久久 | 国产精品特黄一级国产大片 | av天堂午夜精品一区 | 国内自拍视频一区二区 | 国产在线精品国自产拍影院午夜 | 2025国产精品视频 | 国产91在线播放稀缺 | 国产成人亚洲精品无码av大片 | 国产精品国产三级国 | 国产精品亚洲αv | 国产精品一区二区久久宅男 | 国产成人啪精品视频免费软件 | 成人免费无码大片a毛片抽搐 | 国产中文字幕永久综合 | 国产精品视频一区二区三区四区 | 91av在线观看国产日本视频 | 精品久久久久精品亚洲av | 国产伊人网 | 99精品久久久久中文字幕 | 国产亚洲欧美另类一区二区三区 | 99久久久无码国产精精品 | 动漫黄网站免费永久在线观看 | 国产精品观看视 | 国产v片在线观看精品亚洲 国产v日本v欧美v一二三四区 | 2025国产麻豆剧果冻传媒免费 | 国产三级理论电影在线观看网址 | 国产福利小视频在 | 丰满熟妇乱又伦精品 | 国产成人a亚洲精v品无码软件下载 | 国产韩国精品一区二区三区 | 精品亚洲专区无码 | 国产成人亚洲精品无码综合原创 | 国产精品线在线精品国语 | 国产真人无码作爱免费视频久 | 精品国产三级a∨在线欧美 精品国产三级a∨在线无码 | 国产综合一区二区三区黄页秋霞 | 国产av无码秘一区二区三区 | 国产精品尹人在线观看 | av毛片在线播放免费 | 国产ol丝袜高跟在线观看不卡 | 18禁欧美猛交xxxxx无码 | 成人午夜在线观看国产 | 国产美女极度色诱视频 | 成人国产综合一区二区在 | 国产一区二区在线观看涩爱 | av在线不卡无码一区 | 国产福利一区二区三区在线观看 | 国产精品国语自产拍在线观看 | 精品亚洲免费视频91 | 成人精品免费视频在线观看 | 精品人妻中文av一区二区三区 | av在线播放你懂的 | 成人免费播放视频 | a人片在线观看 | 国产成人综合高清在线观看 | 国产粉嫩白浆在线观看 | 国产在线观看免费视频播放 | 高清精品一区二区三区 | 精品国产高清露脸在线观看 | 97人妻人人揉人 | 2025经典日韩动漫在线观看 | 国产一区精品久久综合 | 国产精品无码久久久久不卡 | 国产一区二区在线视频播放 | 国产精品二区在线观看 | 国产精品一在线观看 | 东京热一区二区三区精品无 | 国产午夜手 | av片亚洲国产 | 国产精品日韩专区第一页 | 国产91专区一区二区 | 国产麻豆果冻传媒 | 国产成人啪精品视频免费网站 | 国产91免费在线观看 | 精品人妻大屁股白浆宅男 | 国产精品狼人 | 国产成人无码精品久 | 国产自愉自 | 国产黄网永久免 | 国产一区二区三区精品在线观看 | 国产一区二区三区视频xxx | 国产精品无码无卡 | 二区精品久久久白丝 | 国产精品福利一区二区 | 国产成人无码午夜视频在线观 | 国产91丝袜| 国产ol丝袜高跟在线观看 | 18禁裸乳无遮挡啪 | 国产女主播 | 国产综合一区二区三区精品 | 91麻豆成人精品国产免费 | 国产高清成人在线观看 | 国产长筒袜在线第一页 | 91亚洲精品福利在线播放 | 18禁无遮挡啪啪无码网站性色 | 1024在线播放| 国产午夜精品久久 | av尤物 | a片一区二区三区 | 国产a一级毛片精品高清乱码 | 国产精品夜色一区二区三区 | 国产无套护士丝袜在线观看 | 国产精品高颜值18禁 | 国产成人无码av一区二区 | 国产a级毛片久久影院 | 国产69精品久久久久久妇女迅雷 | 国产成人a福利在线观看 | 99精品国产高清一区二区三 | 国产麻豆剧 | 99精品亚洲一区二区三区 | 国产私拍一区二区三区 | 精品无码国产一区二区三区avw | 国产免费69成人精品视频 | 91精彩视频惊喜不断 | av无码一区二区三区 | 91在线影院 | 国产亚洲欧美一区二区三区在线播放 | 国产区视频在线 | www.中文字幕在线观看 | 高清无码日本一区 | 2025国产午夜福利久久 | 国产高清在线观看av不卡 | 激情婬乱a片无码一二三区下 | 国产69式视频在线观看 | 国产综合在线小说 | 国产一区在线播放网址 | 国产成人噼啪免费视频 | 国产美女高潮久久久久白浆 | 国产成人综合一区精品 | 精品一区二区二区四区五区 | 国产精品亚洲片在线观看不 | 2025国产视频| a人片a级毛片在线观看 | 国产裸体裸拍在线观看 | 国产一区二区三区正品 | 2025最新久久久视精品爱 | 2025亚洲天堂无码视屏手机版 | 99久久精品国产麻豆 | 国产精品日韩亚洲一区二区 | 国产精品亚洲专区无码电影 | 国产ww久久久 | 国产成人亚洲精品在线观看 | 国产无套乱子伦精彩是白视频 | 成人无码在线视频网 | 国产亚洲精品久久久美女 | 高清精品一区二 | 国产日韩欧美一区二区久久精品 | 精品三级内地国产在线观看 | 国产精品入口麻豆免费看 | 国产精品无码手机在线 | 国产粉嫩无码一区二区三区 | 91午夜精品久久久久精品 | 国产一区二区三区日本道 | 国产原创中文精品经理篇 | 丰满人妻被公侵犯中文电影版 | 国产成人免费av片在线观看 | 极品少妇伦理一区二区 | 国产福利姬精品福利 | 动漫电影动漫在线观看 | 变态调教无码专区在线观看 | a片人人澡c片人人人妻蜜臀 | 大尺度擦边球屡见不鲜 | 国产精品一区在线播放 | 国产精品亚洲综合在线观看 | 97精品视频在线免费观看 | 韩日午夜在线资源一区二区 | 91精品国产自产在线啪免费 | 爆乳一区二区三区无码 | 国产午夜福利片在线播放 | 国产91尤物中文在线 | 国产精品女同在线观看 | 国产精品一区二区免费在线观 | 国产精品欧洲激情无码av | 91一区二区三区 | 高潮喷水的毛片 | 成人国产亚洲日韩欧美亚州 | 国产女同一区二区在线 | 成人在线一区二区三区四区 | 18禁成人黄网站免费观看 | 国产肥熟女视频一区二区 | 2025午夜福利在线视频 | 福利姬液液酱喷水福利18禁 | 99久久人妻精品 | 国产美女黄片视频 | 国产成人无码精品久久久露脸 | 精品国产一区二区三区国产馆 | 国产女人喷水视频在线观看 | h无码精品3d动漫在线观看 | 国产精品一区不卡在 | 成人午夜免费无码福利软件 | 国产极品美女一区二区三区 | 成人欧美大片 | 精品久久无码中文字幕 | 国产91久久精品久久精品 | 国产美女视频在线精品 | 国产精品无码无卡毛片不卡视频 | 91国语精品自产拍在线观看一 | 高清中文字幕在线a片 | 国产亚洲中文日本不卡2区 国产亚洲中文日本不卡二区 | 国产一区二区青草久久 | 国偷自产一区二区三区在线视频 | 精品无码一区二区三区爱欲九九 | 国产亚洲欧美在线观看的 | 国产黄a大片在线观看 | 91在线精品麻豆欧美在线 | 成人欧美一区二区三区a片 成人欧美一区二区三区白 成人欧美一区二区三区白人 | 国产精品无码一区二区 | 国产黄色av | 国产成人久久一区二区三区 | 91av电影在| 91日日夜夜人人精 | 国产嫩草视频在线观看 | 成人国产精品秘久久久 | 国产无套粉嫩白浆内 | 国产一区二区理论在线观看 | 国产呦精品一区二区三区下载 | 国产永久在线观看 | 国产最新午夜视频网站 | 国产精品视频一区国模私拍 | 百度国产欧美在线一区二区 | 成人a毛片 | 国产91富婆在线观看91 | 国产精品一区二区三区不卡视频 | 国产精品制服丝袜欧美 | 国产美女被遭强高潮视频 | 国产三片理论电影在线 | 18禁成年无码免费网站无遮 | 99久久无码一区人妻 | 国产精品无码无卡无需播放器 | 国产精品黄在线观看免费软件 | 精品无码一区二区三区在线√观 | 国产一区二区三区在线观看免费 | 91老肥熟| 福利一区二区三区视 | 91精品福利一区二区 | 粉嫩虎白女毛片人体 | 国产三级中文字幕 | 99久久人妻精品 | 国产口爆吞精在线视频 | 国产精品国产三级国产av′ | 国产字幕无码avbbbb | 精品少妇人妻av一区二区 | 精品久久久久久无码免费 | 国产换妻在线免费视频 | 国产精品视频一区二区三区四 | 国产内射在线激情一区 | 国产美女亚洲真人做受在线观看 | av色综合| 3p国产对白刺激在线视频 | 成人国内精品久久久久影院 | 国产亚洲欧美一区在线观看 | 国产熟女一区二区五月婷 | 国产精品成人无码a无码 | 国产乱xxⅹxx国语对白 | 国产成人精品日本亚洲专区不卡 | 高清无码免费网址 | 国产91对白在线播放边 | 91午夜精品亚洲一区二区三区 | 国产高清成人在线观看 | 国产韩国日本欧美品牌suv | 国产三区不卡在线观看 | 国产日韩精品一区二区在线观看 | 国产熟女性爱 | 国产精品亚洲综合 | 国产精品自产拍在线观看一 | 成人欧美一区二区三区免费观看 | 国产欧美日韩一区二区三区蜜桃 | 国产精品云霸高清中字 | 国产成人亚洲精品无码a大片 | 国产欧美产日产综合在线 | 国产精品成人一区二区三区电影 | 国产高清无码日韩一二三区 | 2025中文字幕无码专区 | 变态拳头交视 | 国产精品男人影院在线播放 | 国产aⅴ精品一区二区三区久久 | 爆乳2把你榨干哦动漫在线观看 | 国产午夜精品一区二区三区小说 | 国产美女视频永久免费 | 国语对白精品一区二区在线观看 | 福利片无码 | 国产成人综合在线视频 | 国产精品美女视频 | 国产精品麻豆天美精品久久 | av在线无毒免费观看 | 国产精品偷伦视频观看免费入 | 99综合久久成人国产欧美 | 国产黄色带三级在线观看 | 国内丰满少妇一a级毛片视频 | 国产福利第一视频在线播放 | 国产成人在线观看免费网站 | 91精品国产91久久久久 | 成人无码a区在线观看视频 成人无码h动漫在线网站免费y | 国产亚洲欧美免费视频 | 成人国产综合 | 91婷婷韩国欧美一 | 成人影视大全在线看入口无码 | 99九九成人免费视频精品 | 成人h动漫精品一区二区无码 | 国产成人青青热久免费精品 | 国产操逼视频免费看 | 国产自国产自愉自愉免费 | 国产日韩久久久久精品影 | 国产亚洲色婷婷久久精品 | 91伊人影院 | 精品国产亚一区二区三区不卡 | 国产精品毛片一区二区在线 | 18禁裸体女免费观看 | 国产三级片在线观看 | 国产成人一区二区三区综合区 | 国产成人无码a区在线播放 国产成人无码a区在线观看导航 | 国产极品嫩模在线观看 | 国产午夜成人av片 | 成人亚洲国产精品久久 | 国产福利小视频在线观看的一区 | 国产黄频在线观看视频 | 成av人片在线观看不卡 | 99久久精品国产高潮 | 国产欧美日韩亚洲精品区23 | 国产精品一级毛片在线观看 | 国产精品国产三级国产av剧情 | 国产精品免费综合一区视频 | 国产主播福利精品中文 | 精品久久二区二区 | 极品国模无码 | 韩国三级在线中文字幕无码 | 1000部毛片精品视频免费 | 国产精品精品国产一区二区 | 国产成人综合日韩精品无 | 2025无码专区人妻系列日韩 | 国产成人精品无码在线观看0 | 国产日韩高清一区 | 成人午夜精品无码区久久漫画 | 99ri精品视频在线观看播放 | 国产精品女人高潮毛片 | 极品人妻无码在线 | 国产精品无码午夜免费影院 | 99精品视频观看 | 国产精品色哟哟 | 国产在线视频一区 | 成人三级精品视频在线观看 | 国产精品秘果冻传 | 国产福利一区二区三区高清 | 国产成人麻豆亚洲综合无码精品 | 国产日韩av免费无码一区二区 | 国产亚洲曝欧美曝妖精品 | 变态另类免费一 | 97人洗澡人人澡人人爽人人模 | 国产萌白酱在线一区二区 | 国产一区二区在线观看入口 | 国产精品一区在线观看尤物tv | 国产91久久精品久久精品 | 99久久久无码国产精精品免费 | 岛国毛片在线观看 | 成熟丰满熟妇高潮xxxxx | 岛国三级在| av一级毛片免费 | 国产激情久久久久影院蜜桃aⅴ | 精品视频二区久久久夜 | 国产高清一区二区三区人妖 | a级毛片视频免费播放 | 精品精品国产理论在线 | a级毛片免费看久久久 | 国产一级av国片免费 | 国产av无码秘在线 | 精品一区二区高清免费观 | 国产精品一区二区在线观看麻 | 97无码成人永久免费视频软件 | 国产一二三四精品久久 | 91麻豆国产精品91久久久 | 国产精品三级av三级av三级 | 国产女人高潮叫床视频大片 | 东京热加勒比国产精品 | 911精品国产91久久久久 | 国产欧美日韩中文在线观看不卡 | 国产成人综合久久精品亚洲 | 成人精品在线观看 | 国产黄色a级 | 国产成人精品午夜2025 | 国产在线精品二期不卡 | 91久久精品无码一区二区免费 | 91精品久久久久一区二区三区 | 国产精品福利一级视频 | 国产免费一区二区视频麻豆 | 国产精品一区二区不卡的视频 | 精品国产高清露脸在线观看 | 国产精品麻花传媒二三区别 | 白嫩少妇丰满一区二区 | 国产成人无码a区精油按摩 国产成人无码a区视频在线观看 | 二区三区久久久久久久 | 国产aⅴ视频一区二区三区 国产aⅴ天堂无码一区二区三区 | 国产精品无码一区免费看 | 911国产影院在线观看 | 国产精品爆乳奶水 | a级国产乱理伦片在线 | 国产白丝喷水娇喘视频 | 99久久久精品免 | 国产成人在线网址 | 国产va在线观看免费 | 国产福利精品久久蜜桃 | 国产成人综合色在线观看网站 | 国产a级毛片无码 | 国产免费无遮挡吸乳视频下载 | 国产av午夜福利写真电影 | 国产美女裸体无遮挡免费视频 | 2025国产最新盗摄在线播放 | 加勒比东京热一区二区 | av在线免费播放五月天 | 精品日韩午夜电影在线看 | 精品黑色丝袜在线观看 | 国产午夜精品久久精品电影 | 国产福利小视频在线免费观看 | 囯产精品久久久久久久久免费蜜桃 | 激情都市亚洲一区二区 | 国产爆乳肉感大码在线视频 | 成年人深夜福利 | 日韩在线中文字幕 | 国产色婷婷免费视频 | 国产精品无码专区第1页 | 国精产品自线在拍在线精品 | 国产亚洲中文日本不卡 | 国产免费人视频在 | 91精品国产高清久久久久久 | 精品日韩在线视频一区二 | 国产精品吹潮在线观看中文 | 国产成人综合亚洲欧美 | 加勒比华人在线视频 | 国产成人高清亚洲黄片大全 | 黑丝一区二区三区 | 91传媒在线 | 波多野结衣的av一区二区三区 | 国产毛片网 | 99精品久久久久久久婷婷 | 国产拍偷自偷在线视频 | 国产成人99久久亚洲综合精品 | 国产精品三级a在线观看 | 高潮添下面视频免费看 | 极品精品国产超清自 | 国产加勒比精品无码 | 91蜜桃视| 国产精品爽爽va在线观看无码 | 波多野结衣一区二区三区无码电影 | 精品国产一区二区三区久久久狼 | 2025亚洲阿v天堂在线观看 | 精品国产三级久久久久三级 | 国产精品毛片久 | 国产一区二区波多野结衣 | 99国产欧美久久久精品蜜桃 | 岛国无码精 | av在线无码专区一区 | 成人一区二区三区无码 | 国产精品成人av电影不卡 | 国产精品成人免费视频网站 | 国产一区二区三区日本道 | 精品无码一区二区三区在线√观 | 海角国精产品三区二区三区 | 国产成人福利在线一区 | 国产午夜精品理论在线观看 | 国产一区二区无码视频 | 精品无码免费专区 | 精品久久久久久蜜臀 | 国产三级小视频在线播放完整 | 国产成人综合亚洲动漫在线 | 精品国产亚洲av高清在线观看 | 2025国精品夜夜天天人人 | av亚裔在线观看 | 国产成人精品视频一区二区不卡 | 国产精品无码av片在线观看播放 | 91久久精品无码一区二区 | 国产精品美乳 | 国产69精品久久久久乱码 | 国产综合不卡一区在线视频 | 国产成人精品高清在线观看 | 国产福利萌白酱在线观看视频 | 精品黄片一区二区 | 国产精品va无码一区二区 | 国产精品专区一区二区三区久久 | 精品久久久久久无码人妻 | 国产成人av剧情自拍网站 | 国产成人精品日本亚洲18图 | 国产午夜福利电影免费在线观看 | av在线无码观 | 成人免费a级 | 91成人爽a毛片一区二区 | 国产偷伦视频片手机在线观看 | 国产av中文字幕www.性色av | 2025国产午夜福利 | 国产区图片区小说区亚洲区 | 99久久国产精品男女 | 国产午夜精品精品 | 国产一区二区三区高清在线看 | 3d动漫精品啪啪一区二区 | 国产精品多p对白交换绿帽 国产精品多人p | 国产成人8x人网站视频下载 | 国产精品欧美福利 | 高清无码爆乳系列 | 精品亚洲国产成人a在线观看 | av日韩中文地址 | 国产午夜精品久久久 | 国产精品一区伦免视频播放 | av一区二区无码不卡 | 国产日韩亚卅日韩v无码 | 国产aⅴ精品一区二区三区久 | 国产黄片软件在线观看 | 99精品国产热久久91尤物 | 成人片黄网站久久久免费 | 国色天香久久精品国产一区 | 91精品久久久无码 | 丰满人妻av无码一区二区 | 国产性短视频在线观看 | 国产私人尤物无码不卡 | 国产成人18黄网站免费观看 | 国产一区视频在线观看 | 国产成免费人成网站 | 国产日韩a视频在线播放视频色欲 | 国产av无遮挡喷水白浆网站 | 国产一区二区视频在线观看 | 国产色诱hd在线观 | 国产人妖视频一区二区 | 国产精品白浆一区二区亚洲 | 国产a国产片国产 | 国产成年无码v片在线 | 国产人妖高清一区二区 | 国产中文无码 | 成a人片在线观看无码专区 成a人片在线观看中文漫画 | 国产寡妇树林野 | 国产二区交换配 | 2025国产精品自拍 | 国产成人精品无码一区二区蜜柚 | av在线免费不卡可看 | 国产熟女高潮精选视频 | 国产成人精品久久一区二区三区 | 91在线国偷自产一区国产永久 | 1024在线观看国产天堂 | 精品蜜臀久久久久99网站 | 国产福利无码一区二区在线不 | 国产aⅴ视频一 | 精品熟妇av一区二区三区四区 | 国产精品成人啪精品视频免费观看 | 国自产拍91中文在线观看 | 国产精品无码无片在线观看3d | 国产精品夜夜躁日日躁 | 91综合中文字幕一区二区三区 | 国产精品入口麻豆高清 | 99久久国内精品成人免费 | 国产精品蜜桃美乳在线观看 | 国产精品午夜未成人免费观看 | 97色综合亚洲影院 | 97无码人妻免费视频碰碰碰 | 国产精品高清国产三级国产 | 国产中文内射一区二区三区在线 | a片在线观看免费 | 精品国产99久久久久久www | 国产免费午夜福利在线播放11 | 成人无码区免费视频网站 | 国产三级片在线视频观看 | 国产人妻人伦精品1国产盗摄 | av无码精品一区二区三区宅噜 | 99久久久国产精品尤物免费 | 国产aⅴ精品一区二区三区久 | 成人免费无码婬片在线观看免费 | 99久久国产综合麻豆 | 国产精品无码一级毛片 | 精品少妇一区二区三区视频 | 国产av无码专区亚 | 国产精品色欲av蜜臀麻豆 | 国产综合精品女在线观看 | 国产毛片盗摄视频 | 99国产精品免费观看视频 | 国产午夜三级片 | 成人午夜精品一级毛片免费网站 | 国产成年无码av片在线韩国 | 国产日韩久久久一区二区三区 | av动漫无码不卡在线观看 | 国产尤物精品自在拍视频首页 | h无码精品3d动漫在线观看 | 精品深夜av无码 | 国产精品久草在线观看 | 国产日韩一区二区三区在线观看 | 国产美女极度色诱视频www | 成人av精品一区二区三区四区 | 国产精品视频无圣光一区 | 国产午夜精品久久久久婷看片 | 国产av一区二区三区日韩 | 国产91精品丝袜一区二区漫画 | 国产日韩一区二区视频在线播放 | 国产高清一级毛片在线人 | 精品亚洲av无码国产一二区在线 | 国产va在线观看免费 | 韩国美女视频韩国美女 | 国产精品高潮呻吟久久av无码 | 国产超碰人人做人人爽www | 国产精品一区二区在线播放 | 3d新金瓶玥菲无删减完整版 | 精品人妻中文字幕无码 | 国产一级毛片一区二区三区 | 国产精品国产免费无码专区不卡 | 18禁成年宅男午夜网站 | 国产色精品vr一区二区 | av三级网站免费观看 | 国产成人久久av免费 | 国产成人啪在线观看一 | 2025国产在线拍揄 | 91国语精品自产拍在线观看一 | 国产高清精品入口91 | 99国产精品视频一区二区三区 | 东京热久久综合伊人av | 国产一二三精品无码不卡在线 | 国产成人无码aⅴ片在线图 国产成人无码aa | 国产精品毛片在线完整sab | 国产精品人成a片一区二区下载 | 国产精品亚洲精品影院 | 国产二级一片内射视频播 | 国产剧大全高清免费在线观看 | 国产午夜大秀一区二区三区 | 国产三级精品视频 | 国产成人无码av一区二区三区 | 国产午夜精品一本在线观看 | 国产成人亚洲精品大帝 | 国产精品爆乳奶水无码视频免費 | 国产女人高潮叫床视频大片 | 丰满人妻久久中文字幕免费 | 91精品国产色综合久久不卡蜜 | 国产精品一级二级三级 | 国产精品一级二级在线观看 | 国产sm调教在线观看 | 成人精品国产区在线观看 | www.中文字幕日本 | 国产精品白丝久久av网站 | 国产精品成人大片 | 99精品这里只有精品观看视频 | 国产黑色丝袜在线观看一区 | 精品精品国产自在久久 | 成人午夜爽a片免费视频 | 福利精品短视频在线 | 国产精品一区一区三区在线 | 国产精品免费a片 | 国产色无码精品视频免费 | 国产av高清一区二区三区 | 国产91白丝在线播放 | 国产精品一区欧美 | 国产精品免费av片在线观看 | 国产成人激烈叫床声视频对白 | 狠狠色婷婷久久一区二区 | 成人精品av一区二区三区 | 国产成人无码aa精品一区91 | 囯产精品不卡无码av在线播放 | 国产无套视频在线观看香蕉 | 精品国产男人的天 | 国产真实露脸多 | 成人国产免费av一区二区三区 | 国产精品欧美极品中文久久 | 国产成人精品亚洲高清在线 | av春色在线 | 国产精品无码久久综合网 | 国产一区二区三区日本道 | 国产亚洲欧美在线观看的 | 国产欧美日韩综合自拍 | 国产大学生无码视频在线观看 | 国产一区二区免费精品 | 国产美女视频免费的黄片 | 怀孕动漫精品国产一区二区三区 | 国产极品在线观看视频aaa | 国产成人高清在线观看 | 国产精品国产高清国产av | 国产三级精品美女三级 | 91人妻洗澡一 | 99久久精品无码一 | 国产aⅴ精品一区二区三区色成熟 | 国产成人无码a区在线视频 国产成人无码mv精品 | 国产精品欧美日韩视频一区 | 国产精品无码专区 | 99精品国产福久久久久久 | 国产成人综合亚洲专区 | 国产精品无码一区二区久久 | 国产999精品成人网站 | 2025在线视频国产第一页 | 国产极品精品免费 | 国产娇小粉嫩在线观看 | 精品午夜国产人人福利一区 | 潮喷失禁大喷 | 东京热一本无码av | 国产91精品久久二区二区 | 国产精品无码一级毛片不卡 | 国产精品视频一区二区噜噜 | 精品国产一区二区三区久久 | 国产福利视频一区二区在线播放 | 99久久精品一区二区毛片吞精 | 精品国产亚洲第一区二 | 国产成人精品a视 | 国产成人精品免费视频大全麻豆 | 国产一卡2卡三卡4卡精 | 成人免费www在线高清观看 | 国产v片在线播放 | 精品国产一区二区在线观看 | 18国产精品白浆在线观看免 | 精品国产sm最大网站麻豆 | 成人精品午夜在线播放 | 国产福利小视 | 2025亚洲国产精品无码 | 精品国产蜜桃乱码久久久久 | 国内国精产品一二三区传媒 | 国产精品剧情原创麻豆国产 | 福利一区二区三区不卡视频 | 精品久久二区二区 | 91精品亚洲影视在线观看 | 福利一区二区三区微拍视频 | 91成人免费观看网站 | 丰满的女房东 | 国产成人精品免费青青草原 | 成人无码中文字幕在线不卡 | 成人无码一区 | 国产成人免费无码视频在线观 | 国产av无码专区影视 | 国产精品大屁股白浆视频手 | 精品久久无码久97影院 | 国产盗拍精品视频 | 国产精品大奶视频 | 国产产在线精品亚洲aavv | 成人免费观看全部免费 | 国内小情侣一二三区在线视 | 国产天堂在线丝袜一区 | 国产午夜毛片v区一区二区三区 | 东京热日韩 | 国产亚洲3p无码一区二区三区 | 国产成人精品aa毛片 | 高清无码一区二区在线观看吞精 | 成人欧美精品视频在线观看 | 国产一区二区三区精品99久久 | 国产精品美女久久久久久吹潮 | 国产成人免费视频播放在线观看 | 国产精品白浆精子流水合集 | 国产精品视频系列专区 | 国产亚洲无线码一区二区 | 国产高清在线精品一区app | 国产欧美亚洲日韩久久福利 | 国产产精品亚洲一区二区在线观看 | 国产亚洲欧美在手机线专区 | 国产成人久久精品推最新 | 国产精品视频一区二区 | 精品免费av在线播放 | 国产一级毛片大片大全 | 国产午夜精品喷水久久 | 国产高清亚洲一区二区三区 | 国产成人av在线免播放观看 | 国产一区二区三区免费看 | 不卡国产在线看h | 99久久夜色精品国产亚洲96 | 成人无码h真人在线网站 | 精品无人区乱码一区二区三区手机 | 成人精品一区二区三区在线观 | 国产在线永久免费 | 国产精品无码一区二区三区毛片 | 国产精品一区二区久久久久久 | 国产成人精品第一区二区三区 | 69麻豆天美精东蜜桃传媒潘甜甜 | 国产毛片网站视频在观 | 成人无码精品1区2区3区 | 国产福利小视 | 精品私库av在线 | 国产亚洲日韩欧美另类丝瓜app | 91丝袜高潮流白浆潮喷在线观看 | 国产粉嫩小泬在线 | 成人精品免费视频在线观看 | 91人人 | 国产aⅴ一二三区无码视频 国产aⅴ一区 | 国产成人毛片精品不卡在线 | 丰满少妇人妻高清大乳在线 | 国产在线观看av在线 | 成人无码一区二区片 | 成人精品第一区二区三 | 国语久久无码高清 | 国自产精品手机在线 | 国产日韩一区在线观看视频 | 国产成人a区在线观看视频 国产成人a人 | 国产欧美日韩小视频高清 | 国产精品白浆无码流出免费看 | 国产偷抇久久精品a片蜜臀av | 国产精品免费视频无码 | 国产在线高清不卡免费播放 |