欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:iOS 面試 Swift基礎(chǔ)題

柚子快報(bào)邀請(qǐng)碼778899分享:iOS 面試 Swift基礎(chǔ)題

http://yzkb.51969.com/

一、Swift 存儲(chǔ)屬性和計(jì)算屬性比較:

存儲(chǔ)型屬性:用于存儲(chǔ)一個(gè)常量或者變量 計(jì)算型屬性: 計(jì)算性屬性不直接存儲(chǔ)值,而是用 get / set 來(lái)取值 和 賦值,可以操作其他屬性的變化.

計(jì)算屬性可以用于類(lèi)、結(jié)構(gòu)體和枚舉,存儲(chǔ)屬性只能用于類(lèi)和結(jié)構(gòu)體。存儲(chǔ)屬性可以是變量存儲(chǔ)屬性(用關(guān)鍵字 var 定義),也可以是常量存儲(chǔ)屬性(用關(guān)鍵字let定義),而計(jì)算屬性只能用var定義計(jì)算屬性不直接存儲(chǔ)值,而是提供一個(gè) getter 和一個(gè)可選的setter,來(lái)間接獲取和設(shè)置其他屬性或變量的值

var age = 12

var name = "小花"

var kind = "法斗"

//定義計(jì)算屬性的getter方法,該方法的返回值由age、name、kind三個(gè)存儲(chǔ)屬性決定

var petInfo:String{

get {

return "this is a pet which name is \(name),age is \(age), kind is \(kind)"

}

set (newInfo)

{

}

}

二、inout關(guān)鍵字有什么作用

需要用到inout 關(guān)鍵字,調(diào)用函數(shù)時(shí)加& inout關(guān)鍵字本質(zhì)是通過(guò)地址傳遞進(jìn)行值修改的

三、OC和Swift中的protocol

OC和SwiftProtocol的共同點(diǎn)

本質(zhì)都是抽取不同類(lèi)的共同方法和屬性(聲明),供遵循協(xié)議的類(lèi)或?qū)ο笫褂谩?都可以通過(guò)定義協(xié)議實(shí)例deleagate,來(lái)實(shí)現(xiàn)委托代理模式。 PS:類(lèi)比繼承的概念,繼承父類(lèi)的方式比較險(xiǎn)隘,子類(lèi)和父類(lèi)只能為同一基類(lèi),且方法都有實(shí)現(xiàn),需在子類(lèi)中override,并不能把方法和屬性完全獨(dú)立出來(lái),且不能多繼承。

OC和SwiftProtocol的區(qū)別(核心)

OC中的協(xié)議更單純的受限于委托代理的含義,多用于跨類(lèi)的傳值和回調(diào)通知。 而Swift是面向協(xié)議編程,其思想是通過(guò)抽取不同類(lèi)中的相同方法和屬性,實(shí)現(xiàn)模塊化減少耦合。 Swift可以通過(guò)協(xié)議extension擴(kuò)展,缺省實(shí)現(xiàn)協(xié)議的方法(OC不行)。 Swift的協(xié)議不需要單獨(dú)聲明協(xié)議對(duì)象(id delegate)和指定代理(delegate = self),只需要遵循協(xié)議的類(lèi)實(shí)現(xiàn)聲明,或使用協(xié)議的缺省實(shí)現(xiàn)。

四、Swift 中的 enum 和 OC 中 有什么區(qū)別

OC 1.oc的枚舉值相當(dāng)于這個(gè)文件中的一個(gè)局部變量,只能是整型 2.不同枚舉中,枚舉名稱(chēng)不可以一樣,在同一文件 Swift 3.枚舉里可以寫(xiě)方法 4.枚舉的rawValue可以是Float(float也是賦值的后面依次+1)或是String,或是沒(méi)有 5.可以用Rank(rawValue: 3)方法創(chuàng)建一個(gè)枚舉實(shí)例 6.枚舉實(shí)例可以帶參數(shù)

五、struct和class的區(qū)別

1)swift中所有值類(lèi)型:struct、enum使用直接派發(fā)。 2)swift中協(xié)議的extensions(類(lèi)似于OC的分類(lèi))使用直接派發(fā),初始聲明函數(shù)使用函數(shù)表派發(fā) 3)swift中class中extensions使用直接派發(fā),初始化聲明函數(shù)使用函數(shù)表派發(fā),dynamic修飾的函數(shù)使用消息派發(fā)。

Swift中,mutating關(guān)鍵字指的是可變即可修改。用在structure和enumeration中,雖然結(jié)構(gòu)體和枚舉可以定義自己的方法,但是默認(rèn)情況下,實(shí)例方法中是不可以修改值類(lèi)型的屬性。為了能夠在實(shí)例方法中修改屬性值,可以在方法定義前添加關(guān)鍵字mutating。 在 Swift 中,值類(lèi)型,存放在棧區(qū);引用類(lèi)型,存放在堆區(qū)。Swift 中,典型的有 struct,enum,以及 tuple 都是值類(lèi)型。 當(dāng)值類(lèi)型的變量作為參數(shù)被傳入函數(shù)時(shí),相當(dāng)于創(chuàng)建了新的常量并初始化為傳入的變量值,該參數(shù)的作用域及生命周期僅存在于函數(shù)體內(nèi)。 當(dāng)引用類(lèi)型的變量作為參數(shù)被傳入函數(shù)時(shí),相當(dāng)于創(chuàng)建了新的常量并初始化為傳入的變量引用,當(dāng)函數(shù)體內(nèi)操作參數(shù)指向的數(shù)據(jù),函數(shù)體外也受到了影響 6.當(dāng)你的項(xiàng)目的代碼是 Swift 和 Objective-C 混合開(kāi)發(fā)時(shí),你會(huì)發(fā)現(xiàn)在 Objective-C 的代碼里無(wú)法調(diào)用 Swift 的 Struct。因?yàn)橐?Objective-C 里調(diào)用 Swift 代碼的話(huà),對(duì)象需要繼承于 NSObject。 7.內(nèi)存分配:struct分配在棧中,class分配在堆中。struct比class更“輕量級(jí)”(struct是跑車(chē)跑得快,class是SUV可以載更多的人和貨物) 3.struct是值類(lèi)型(Value Type),深拷貝。class是引用類(lèi)型(Reference Type),淺拷貝。

六、Swift optional是什么類(lèi)型的

optional類(lèi)型是一個(gè)枚舉類(lèi)型,有兩個(gè)枚舉值: 1、None類(lèi)型 2、Some(Wrapped) 這兩個(gè)類(lèi)型決定了optional類(lèi)型的概念和含義,有值或者沒(méi)有值: 1)optional.None表示該類(lèi)型沒(méi)有值,也就是nil。(特別聲明,swift中的nil不在有指針含義,而是表示且僅表示optional的.None)。 2)optional.Some(Wrapped)這是表示有值的情況,Some類(lèi)似于java或者c++的泛類(lèi)型的含義,Wrapped 類(lèi)似是封裝的值。

optional的wrap和unwrap

使用optional類(lèi)型,該類(lèi)型會(huì)對(duì)賦值過(guò)程和取值進(jìn)行一些處理。 1)賦值也被稱(chēng)為裝包的過(guò)程(wrap),optional類(lèi)型會(huì)獲取當(dāng)前值的類(lèi)型和具體值,如int類(lèi)型的數(shù)字100.當(dāng)一個(gè)optional類(lèi)型被賦值為這個(gè)值時(shí),其實(shí)optional記錄了對(duì)應(yīng)的類(lèi)型(some)int,和值部分(wrapped)100. 2)取值也被稱(chēng)為解包的過(guò)程(unwrap),optional根據(jù)記錄的類(lèi)型(some)如上面說(shuō)的int,和值部分(wrapped)100,新建一個(gè)some(wrapped)同int(100)返回給程序 optional是swift特別聲明的安全類(lèi)型,在使用過(guò)程中如果處理得當(dāng)?shù)脑?huà)可以防止以前oc上很多因?yàn)閿?shù)據(jù)沒(méi)值導(dǎo)致的crash。個(gè)人還是比較推薦使用的,雖然有時(shí)候有些解包的過(guò)程感覺(jué)特別麻煩,但這都是一道道安全門(mén),阻斷了很多crash的誕生。

七、rxswift中請(qǐng)求重試的方法是哪個(gè)?

1,catchError

enum ObError: Error {

case error1

}

let ob1 = PublishSubject()

let ob2 = PublishSubject.of("A", "B")

ob1.catchError { (error) -> Observable in

print(error)

return ob2

}.subscribe { event in

print(event)

}.disposed(by: disposeBag)

ob1.onNext("111")

ob1.onError(ObError.error1)

//next(111)

//error1

//next(A)

//next(B)

//completed

2,retry

var isFail = true

let obs = Observable.create { (ob) -> Disposable in

ob.onNext("成功1")

if isFail {

ob.onError(ObError.error1)

isFail = false

}

ob.onNext("重試成功")

ob.onCompleted()

return Disposables.create()

}

obs.retry(2).subscribe { event in

print(event)

}.disposed(by: disposeBag)

next(成功1)

next(成功1)

next(重試成功)

completed

八、講解一下Swift中的數(shù)據(jù)封裝

封裝主要有兩大目的:一是為了我們使用數(shù)據(jù)更加方便,二是為了數(shù)據(jù)保護(hù)。 1、Swift 訪(fǎng)問(wèn)修飾符 在 Swift 語(yǔ)言中,訪(fǎng)問(wèn)修飾符也分為三類(lèi),分別是 private、internal、public。

Swift 的訪(fǎng)問(wèn)修飾符從 Xcode6 beta4 才開(kāi)始支持。 Swift 對(duì)訪(fǎng)問(wèn)權(quán)限的控制,不是基于類(lèi)的,而是基于文件的。 在 Swift 語(yǔ)言中,若要設(shè)置某一屬性的訪(fǎng)問(wèn)權(quán)限,需在定義屬性時(shí)加上相應(yīng)的修飾前綴。 三類(lèi)修飾符的訪(fǎng)問(wèn)權(quán)限

1)private 所修飾的屬性或者方法只能在當(dāng)前 Swift 源文件里可以訪(fǎng)問(wèn),在別的文件里訪(fǎng)問(wèn)會(huì)出錯(cuò)。

2)internal 是默認(rèn)的訪(fǎng)問(wèn)權(quán)限。所修飾的屬性或者方法在源代碼所在的整個(gè)模塊都可以訪(fǎng)問(wèn)。如果是框架或者是庫(kù)代碼,則在整個(gè)框架內(nèi)部可以訪(fǎng)問(wèn),框架由外部代碼所引用時(shí),則不可訪(fǎng)問(wèn)。如果是 App 代碼,在整個(gè) App 內(nèi)部可以訪(fǎng)問(wèn)。

3)public 所修飾的屬性或者方法對(duì)于引用了該文件或者模塊的文件來(lái)講,都能訪(fǎng)問(wèn)這些屬性和方法。一般來(lái)說(shuō) public 的出現(xiàn)是為了 API 開(kāi)發(fā)而設(shè)置。

Class Person {

private var _weight: Int!

var weight: Int {

get {

return _weight

}

set {

_weight = newValue

}

}

}

您甚至可以將變量設(shè)為公開(kāi)只讀,并設(shè)為私有讀寫(xiě):

class Person {

public private(set) var weight: Int

}

九、Swift異常捕捉的方法有哪些 ?

//

// ViewController.swift

// Throws

//

// Created by fe on 2017/3/7.

// Copyright ? 2017年 fe. All rights reserved.

//

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {

super.viewDidLoad()

//如果在調(diào)用系統(tǒng)的方法時(shí),后面有throws則說(shuō)明此方法會(huì)拋出異常,如果方法會(huì)拋出異常,則需要我們處理異常

//創(chuàng)建正則表達(dá)式規(guī)則

let pattern = "abcdefg"

//創(chuàng)建正則表達(dá)式隊(duì)形

/*

在swift中提供三種處理異常的方式

方式一:try方式 程序員手動(dòng)捕捉異常

do { let regex = try NSRegularExpression(pattern: pattern, options:.caseInsensitive)

print(regex)

}catch{

print(error)

}

方式二:try?方式(常用方式) 系統(tǒng)幫助我們處理異常,如果有異常,則該方法返回nil,如果沒(méi)有異常,則該方法返回對(duì)應(yīng)的對(duì)象

guard (try? NSRegularExpression(pattern: pattern, options: .caseInsensitive)) != nil else {

return

}

方式三:try!方式(不建議使用,非常危險(xiǎn))這種方法直接告訴系統(tǒng)沒(méi)有異常,如果有異常則程序會(huì)崩潰

let regex = try! NSRegularExpression(pattern: pattern, options:.caseInsensitive)

*/

}

}

函數(shù)中產(chǎn)生的異常只能在函數(shù)內(nèi)部解決,開(kāi)發(fā)者也可以使用throws關(guān)鍵字將此函數(shù)聲明為可拋異常函數(shù),此類(lèi)聲明則允許開(kāi)發(fā)者在函數(shù)外解決函數(shù)內(nèi)部拋出的異常

** 異常的捕獲與處理

系統(tǒng)為我們提供了三種異常處理的方法:

<1> 使用do-catch結(jié)構(gòu)來(lái)捕獲處理異常、將異常映射為optional值,終止異常傳遞

<2> 使用try?來(lái)調(diào)用函數(shù)可以將異常映射為Optional值

<3> 使用try!來(lái)強(qiáng)制終止異常的傳遞

do-catch:do-catch結(jié)構(gòu)是swift語(yǔ)言中處理異常最常用的方法,開(kāi)發(fā)者需要將可能拋出的異常的代碼放入do結(jié)構(gòu)中,如果這部分代碼中有拋出異常,則會(huì)從catch塊中尋找對(duì)應(yīng)的異常類(lèi)型,如果找到對(duì)應(yīng)的,則會(huì)執(zhí)行此catch塊中的異常處理代碼.

十、map函數(shù)有幾種、分別講解一下?

高階函數(shù)一共有下面幾個(gè):

map:對(duì)給定數(shù)組每一個(gè)元素,執(zhí)行閉包中的映射,將映射結(jié)果放置在數(shù)組中返回。 flatMap:對(duì)給定數(shù)組的每一個(gè)元素,執(zhí)行閉包中的映射,對(duì)映射結(jié)果進(jìn)行合并操做,而后將合并操做后的結(jié)果放置在數(shù)組中返回。 compactMap:對(duì)給定數(shù)組的每一個(gè)元素,執(zhí)行閉包中的映射,將非空的映射結(jié)果放置在數(shù)組中返回。 filter:對(duì)給定數(shù)組的每一個(gè)元素,執(zhí)行閉包中的操做,將符合條件的元素放在數(shù)組中返回。 reduce:對(duì)給定數(shù)組的每一個(gè)元素,執(zhí)行閉包中的操做對(duì)元素進(jìn)行合并,并將合并結(jié)果返回。

柚子快報(bào)邀請(qǐng)碼778899分享:iOS 面試 Swift基礎(chǔ)題

http://yzkb.51969.com/

文章來(lái)源

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀(guān)點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18785488.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪(fǎng)問(wèn)

文章目錄