最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift調(diào)用Objective-C編寫的API實(shí)例

 更新時(shí)間:2014年07月21日 10:33:30   投稿:junjie  
這篇文章主要介紹了Swift調(diào)用Objective-C編寫的API實(shí)例,介紹的比較全面和詳細(xì),對(duì)Objective-C代碼的重復(fù)利用有極大好處,的朋友可以參考下

互用性是讓 Swift 和 Objective-C 相接合的一種特性,使你能夠在一種語(yǔ)言編寫的文件中使用另一種語(yǔ)言。當(dāng)你準(zhǔn)備開(kāi)始把 Swift 融入到你的開(kāi)發(fā)流程中時(shí),你應(yīng)該懂得如何利用互用性來(lái)重新定義并提高你寫 Cocoa 應(yīng)用的方案。

互用性很重要的一點(diǎn)就是允許你在寫 Swift 代碼時(shí)使用 Objective-C 的 API 接口。當(dāng)你導(dǎo)入一個(gè) Objective-C 框架后,你可以使用原生的 Swift 語(yǔ)法實(shí)例化它的 Class 并且與之交互。

初始化

為了使用 Swift 實(shí)例化 Objective-C 的 Class,你應(yīng)該使用 Swift 語(yǔ)法調(diào)用它的一個(gè)初始化器。當(dāng) Objective-C 的init方法變化到 Swift,他們用 Swift 初始化語(yǔ)法呈現(xiàn)?!癷nit”前綴被截?cái)喈?dāng)作一個(gè)關(guān)鍵字,用來(lái)表明該方法是初始化方法。那些以“initWith”開(kāi)頭的init方法,“With”也會(huì)被去除。從“init”或者“initWith”中分離出來(lái)的這部分方法名首字母變成小寫,并且被當(dāng)做是第一個(gè)參數(shù)的參數(shù)名。其余的每一部分方法名依次變味參數(shù)名。這些方法名都在圓括號(hào)中被調(diào)用。

舉個(gè)例子,你在使用 Objective-C 時(shí)會(huì)這樣做:

復(fù)制代碼 代碼如下:

//Objective-C
UITableView *myTableView = [[UITableView alloc]
initWithFrame:CGRectZero style:UITableViewStyleGrouped];

在 Swift 中,你應(yīng)該這樣做:

復(fù)制代碼 代碼如下:

//Swift
let myTableView: UITableView = UITableView(frame: CGRectZero, style: .Grouped)

你不需要調(diào)用 alloc,Swift 能替你處理。注意,當(dāng)使用 Swift 風(fēng)格的初始化函數(shù)的時(shí)候,“init”不會(huì)出現(xiàn)。
你可以在初始化時(shí)顯式的聲明對(duì)象的類型,也可以忽略它,Swift 能夠正確判斷對(duì)象的類型。

復(fù)制代碼 代碼如下:

//Swift
let myTextField = UITextField(frame: CGRect(0.0, 0.0, 200.0, 40.0))

這里的UITableView和UITextField對(duì)象和你在 Objective-C 中使用的具有相同的功能。你可以用一樣的方式使用他們,包括訪問(wèn)屬性或者調(diào)用各自的類中的方法。
為了統(tǒng)一和簡(jiǎn)易,Objective-C 的工廠方法也在 Swift 中映射為方便的初始化方法。這種映射能夠讓他們使用同樣簡(jiǎn)潔明了的初始化方法。例如,在 Objective-C 中你可能會(huì)像下面這樣調(diào)用一個(gè)工廠方法:

復(fù)制代碼 代碼如下:

//Objective-C
UIColor *color = [UIColor colorWithRed:0.5 green:0.0 blue:0.5 alpha:1.0];

在 Swift 中,你應(yīng)該這樣做:

復(fù)制代碼 代碼如下:

//Swift
let color = UIColor(red: 0.5, green: 0.0, blue: 0.5, alpha: 1.0)

訪問(wèn)屬性

在 Swift 中訪問(wèn)和設(shè)置 Objective-C 對(duì)象的屬性時(shí),使用點(diǎn)語(yǔ)法:

復(fù)制代碼 代碼如下:

// Swift
myTextField.textColor = UIColor.darkGrayColor()
myTextField.text = "Hello world"
if myTextField.editing {
    myTextField.editing = false
}

當(dāng) get 或 set 屬性時(shí),直接使用屬性名稱,不需要附加圓括號(hào)。注意,darkGrayColor后面附加了一對(duì)圓括號(hào),這是因?yàn)閐arkGrayColor是UIColor的一個(gè)類方法,不是一個(gè)屬性。

在 Objective-C 中,一個(gè)有返回值的無(wú)參數(shù)方法可以被作為一個(gè)隱式的訪問(wèn)函數(shù),并且可以與訪問(wèn)器使用同樣的方法調(diào)用。但在 Swift 中不再能夠這樣做了,只有使用@property關(guān)鍵字聲明的屬性才會(huì)被作為屬性引入。

方法

在 Swift 中調(diào)用 Objective-C 方法時(shí),使用點(diǎn)語(yǔ)法。

當(dāng) Objective-C 方法轉(zhuǎn)換到 Swift 時(shí),Objective-C 的selector的第一部分將會(huì)成為方法名并出現(xiàn)在圓括號(hào)的前面,而第一個(gè)參數(shù)將直接在括號(hào)中出現(xiàn),并且沒(méi)有參數(shù)名,而剩下的參數(shù)名與參數(shù)則一一對(duì)應(yīng)的填入圓括號(hào)中。

舉個(gè)例子,你在使用 Objective-C 時(shí)會(huì)這樣做:

復(fù)制代碼 代碼如下:

//Objective-C
[myTableView insertSubview:mySubview atIndex:2];

在 Swift 中,你應(yīng)該這樣做:

復(fù)制代碼 代碼如下:

//Swift
myTableView.insertSubview(mySubview, atIndex: 2)

如果你調(diào)用一個(gè)無(wú)參方法,仍必須在方法名后面加上一對(duì)圓括號(hào)

復(fù)制代碼 代碼如下:

//Swift
myTableView.layoutIfNeeded()

id 兼容性(id Compatibility)

Swift 包含一個(gè)叫做AnyObject的協(xié)議類型,表示任意類型的對(duì)象,就像 Objective-C 中的id一樣。AnyObject協(xié)議允許你編寫類型安全的 Swift 代碼同時(shí)維持無(wú)類型對(duì)象的靈活性。因?yàn)锳nyObject協(xié)議保證了這種安全,Swift 將 id 對(duì)象導(dǎo)入為 AnyObject。

舉個(gè)例子,跟 id 一樣,你可以為AnyObject類型的對(duì)象分配任何其他類型的對(duì)象,你也同樣可以為它重新分配其他類型的對(duì)象。

復(fù)制代碼 代碼如下:

//Swift
var myObject: AnyObject = UITableViewCell()
myObject = NSDate()

你也可以在調(diào)用 Objective-C 方法或者訪問(wèn)屬性時(shí)不將它轉(zhuǎn)換為具體類的類型。這包括了 Objcive-C 中標(biāo)記為 @objc 的方法。

復(fù)制代碼 代碼如下:

//Swift
let futureDate = myObject.dateByAddingTimeInterval(10)
let timeSinceNow = myObject.timeIntervalSinceNow

然而,由于直到運(yùn)行時(shí)才知道AnyObject的對(duì)象類型,所以有可能在不經(jīng)意間寫出不安全代碼。另外,與 Objective-C 不同的是,如果你調(diào)用方法或者訪問(wèn)的屬性 AnyObject 對(duì)象沒(méi)有聲明,將會(huì)報(bào)運(yùn)行時(shí)錯(cuò)誤。比如下面的代碼在運(yùn)行時(shí)將會(huì)報(bào)出一個(gè) unrecognized selector error 錯(cuò)誤:

復(fù)制代碼 代碼如下:

//Swift
myObject.characterAtIndex(5)
// crash, myObject does't respond to that method

但是,你可以通過(guò) Swift 的 optinals 特性來(lái)排除這個(gè) Objective-C 中常見(jiàn)的錯(cuò)誤,當(dāng)你用AnyObject對(duì)象調(diào)用一個(gè) Objective-C 方法時(shí),這次調(diào)用將會(huì)變成一次隱式展開(kāi) optional(implicitly unwrapped optional)的行為。你可以通過(guò) optional 特性來(lái)決定 AnyObject 類型的對(duì)象是否調(diào)用該方法,同樣的,你可以把這種特性應(yīng)用在屬性上。

舉個(gè)例子,在下面的代碼中,第一和第二行代碼將不會(huì)被執(zhí)行因?yàn)閘ength屬性和characterAtIndex:方法不存在于 NSDate 對(duì)象中。myLength常量會(huì)被推測(cè)成可選的Int類型并且被賦值為nil。同樣你可以使用if-let聲明來(lái)有條件的展開(kāi)這個(gè)方法的返回值,從而判斷對(duì)象是否能執(zhí)行這個(gè)方法。就像第三行做的一樣。

復(fù)制代碼 代碼如下:

//Swift
let myLength = myObject.length?
let myChar = myObject.characterAtIndex?(5)
if let fifthCharacter = myObject.characterAtIndex(5) {
    println("Found \(fifthCharacter) at index 5")
}

對(duì)于 Swift 中的強(qiáng)制類型轉(zhuǎn)換,從 AnyObject 類型的對(duì)象轉(zhuǎn)換成明確的類型并不會(huì)保證成功,所以它會(huì)返回一個(gè)可選的值。而你需通過(guò)檢查該值的類型來(lái)確認(rèn)轉(zhuǎn)換是否成功。

復(fù)制代碼 代碼如下:

//Swift
let userDefaults = NSUserDefaults.standardUserDefaults()
let lastRefreshDate: AnyObject? = userDefaults.objectForKey("LastRefreshDate")
if let date = lastRefreshDate as? NSDate {
    println("\(date.timeIntervalSinceReferenceDate)")
}

當(dāng)然,如果你能確定這個(gè)對(duì)象的類型(并且確定不是nil),你可以添加as操作符強(qiáng)制調(diào)用。

復(fù)制代碼 代碼如下:

//Swift
let myDate = lastRefreshDate as NSDate
let timeInterval = myDate.timeIntervalSinceReferenceDate

使用nil

在Objective-C中,對(duì)象的引用可以是值為NULL的原始指針(同樣也是Objective-C中的nil)。而在Swift中,所有的值–包括結(jié)構(gòu)體與對(duì)象的引用–都被保證為非空。作為替代,你將這個(gè)可以為空的值包裝為optional type。當(dāng)你需要宣告值為空時(shí),你需要使用nil。你可以在Optionals中了解更多。

因?yàn)镺bjective-C不會(huì)保證一個(gè)對(duì)象的值是否非空,Swift在引入Objective-C的API的時(shí)候,確保了所有函數(shù)的返回類型與參數(shù)類型都是optional,在你使用Objective-C的API之前,你應(yīng)該檢查并保證該值非空。 在某些情況下,你可能絕對(duì)確認(rèn)某些Objective-C方法或者屬性永遠(yuǎn)不應(yīng)該返回一個(gè)nil的對(duì)象引用。為了讓對(duì)象在這種情況下更加易用,Swift使用 implicitly unwrapped optionals 方法引入對(duì)象, implicitly unwrapped optionals 包含optional 類型的所有安全特性。此外,你可以直接訪問(wèn)對(duì)象的值而無(wú)需檢查nil。當(dāng)你訪問(wèn)這種類型的變量時(shí), implicitly unwrapped optional 首先檢查這個(gè)對(duì)象的值是否不存在,如果不存在,將會(huì)拋出運(yùn)行時(shí)錯(cuò)誤。

擴(kuò)展(Extensions)

Swift 的擴(kuò)展和 Objective-C 的類別(Category)相似。擴(kuò)展為原有的類,結(jié)構(gòu)和枚舉豐富了功能,包括在 Objective-C 中定義過(guò)的。你可以為系統(tǒng)的框架或者你自己的類型增加擴(kuò)展,只需要導(dǎo)入合適的模塊并且保證你在 Objective-C 中使用的類、結(jié)構(gòu)或枚舉擁有相同的名字。

舉個(gè)例子,你可以擴(kuò)展UIBezierPath類來(lái)為它增加一個(gè)等邊三角形,這個(gè)方法只需提供三角形的邊長(zhǎng)與起點(diǎn)。

復(fù)制代碼 代碼如下:

//Swift
extension UIBezierPath {
    convenience init(triangleSideLength: Float, origin: CGPoint) {
        self.init()
        let squareRoot = Float(sqrt(3))
        let altitude = (squareRoot * triangleSideLength) / 2
        moveToPoint(origin)
        addLineToPoint(CGPoint(triangleSideLength, origin.x))
        addLineToPoint(CGPoint(triangleSideLength / 2, altitude))
        closePath()
    }
}

你也可以使用擴(kuò)展來(lái)增加屬性(包括類的屬性與靜態(tài)屬性)。然而,這些屬性必須是通過(guò)計(jì)算才能獲取的,擴(kuò)展不會(huì)為類,結(jié)構(gòu)體,枚舉存儲(chǔ)屬性。下面這個(gè)例子為CGRect類增加了一個(gè)叫area的屬性。

復(fù)制代碼 代碼如下:

//Swift
extension CGRect {
    var area: CGFloat {
    return width * height
    }
}
let rect = CGRect(x: 0.0, y: 0.0, width: 10.0, height: 50.0)
let area = rect.area
// area: CGFloat = 500.0

你同樣可以使用擴(kuò)展來(lái)為類添加協(xié)議而無(wú)需增加它的子類。如果這個(gè)協(xié)議是在 Swift 中被定義的,你可以添加 comformance 到它的結(jié)構(gòu)或枚舉中無(wú)論它們?cè)?Objective-C 或在 Swift 中被定義。

你不能使用擴(kuò)展來(lái)覆蓋 Objective-C 類型中存在的方法與屬性。

閉包(Closures)

Objective-C 中的blocks會(huì)被自動(dòng)導(dǎo)入為 Swift 中的閉包。例如,下面是一個(gè) Objective-C 中的 block 變量:

復(fù)制代碼 代碼如下:

//Objective-C
void (^completionBlock)(NSData *, NSError *) = ^(NSData *data, NSError *error) {/* ... */}

而它在 Swift 中的形式為

復(fù)制代碼 代碼如下:

//Swift
let completionBlock: (NSData, NSError) -> Void = {data, error in /* ... */}

Swift 的閉包與 Objective-C 中的 blocks 能夠和睦相處,所以你可以把一個(gè) Swift 閉包傳遞給一個(gè)把 block 作為參數(shù)的 Objective-C 函數(shù)。Swift 閉包與函數(shù)具有互通的類型,所以你甚至可以傳遞 Swift 函數(shù)的名字。
閉包與 blocks 語(yǔ)義上想通但是在一個(gè)地方不同:變量是可以直接改變的,而不是像 block 那樣會(huì)拷貝變量。換句話說(shuō),Swift 中變量的默認(rèn)行為與 Objective-C 中 __block 變量一致。

比較對(duì)象

當(dāng)比較兩個(gè) Swift 中的對(duì)象時(shí),可以使用兩種方式。第一種,使用(==),判斷兩個(gè)對(duì)象內(nèi)容是否相同。第二種,使用(===),判斷常量或者變量是否為同一個(gè)對(duì)象的實(shí)例。

Swift 與 Objective-C 一般使用 == 與 === 操作符來(lái)做比較。Swift 的 == 操作符為源自 NSObject 的對(duì)象提供了默認(rèn)的實(shí)現(xiàn)。在實(shí)現(xiàn) == 操作符時(shí),Swift 調(diào)用 NSObject 定義的 isEqual: 方法。

NSObject 類僅僅做了身份的比較,所以你需要在你自己的類中重新實(shí)現(xiàn) isEqual: 方法。因?yàn)槟憧梢灾苯觽鬟f Swift 對(duì)象給 Objective-C 的 API,你也應(yīng)該為這些對(duì)象實(shí)現(xiàn)自定義的 isEqual: 方法,如果你希望比較兩個(gè)對(duì)象的內(nèi)容是否相同而不是僅僅比較他們是不是由相同的對(duì)象派生。

作為實(shí)現(xiàn)比較函數(shù)的一部分,確保根據(jù)Object comparison實(shí)現(xiàn)對(duì)象的hash屬性。更進(jìn)一步的說(shuō),如果你希望你的類能夠作為字典中的鍵,也需要遵從Hashable協(xié)議以及實(shí)現(xiàn)hashValues屬性。

Swift 類型兼容性

當(dāng)你定義了一個(gè)繼承自NSObject或者其他 Objective-C 類的 Swift 類,這些類都能與 Objective-C 無(wú)縫連接。所有的步驟都有 Swift 編譯器自動(dòng)完成,如果你從未在 Objective-C 代碼中導(dǎo)入 Swift 類,你也不需要擔(dān)心類型適配問(wèn)題。另外一種情況,如果你的 Swift 類并不來(lái)源自 Objectve-C 類而且你希望能在 Objecive-C 的代碼中使用它,你可以使用下面描述的 @objc 屬性。

@objc可以讓你的 Swift API 在 Objective-C 中使用。換句話說(shuō),你可以通過(guò)在任何 Swift 方法、類、屬性前添加@objc,來(lái)使得他們可以在 Objective-C 代碼中使用。如果你的類繼承自 Objective-C,編譯器會(huì)自動(dòng)幫助你完成這一步。編譯器還會(huì)在所有的變量、方法、屬性前加 @objc,如果這個(gè)類自己前面加上了@objc關(guān)鍵字。當(dāng)你使用@IBOutlet,@IBAction,或者是@NSManaged屬性時(shí),@objc也會(huì)自動(dòng)加在前面。這個(gè)關(guān)鍵字也可以用在 Objetive-C 中的 target-action 設(shè)計(jì)模式中,例如,NSTimer或者UIButton。

當(dāng)你在 Objective-C 中使用 Swift API,編譯器基本對(duì)語(yǔ)句做直接的翻譯。例如,Swift API func playSong(name: String)會(huì)被解釋為- (void)playSong:(NSString *)name。然而,有一個(gè)例外:當(dāng)在 Objective-C 中使用 Swift 的初始化函數(shù),編譯器會(huì)在方法前添加“initWith”并且將原初始化函數(shù)的第一個(gè)參數(shù)首字母大寫。例如,這個(gè) Swift 初始化函數(shù)init (songName: String, artist: String將被翻譯為- (instancetype)initWithSongName:(NSString *)songName artist:(NSString *)artist 。

Swift 同時(shí)也提供了一個(gè)@objc關(guān)鍵字的變體,通過(guò)它你可以自定義在 Objectiv-C 中轉(zhuǎn)換的函數(shù)名。例如,如果你的 Swift 類的名字包含 Objecytive-C 中不支持的字符,你就可以為 Objective-C 提供一個(gè)可供替代的名字。如果你給 Swift 函數(shù)提供一個(gè) Objecytive-C 名字,要記得為帶參數(shù)的函數(shù)添加(:)

復(fù)制代碼 代碼如下:

//Swift
@objc(Squirrel)
class Белка {
    @objc(initWithName:)
    init (имя: String) { /*...*/ }
    @objc(hideNuts:inTree:)
    func прячьОрехи(Int, вДереве: Дерево) { /*...*/ }
}

當(dāng)你在 Swift 類中使用@objc(<#name#>)關(guān)鍵字,這個(gè)類可以不需要命名空間即可在 Objective-C 中使用。這個(gè)關(guān)鍵字在你遷徙 Objecive-C 代碼到 Swift 時(shí)同樣也非常有用。由于歸檔過(guò)的對(duì)象存貯了類的名字,你應(yīng)該使用@objc(<#name#>)來(lái)聲明與舊的歸檔過(guò)的類相同的名字,這樣舊的類才能被新的 Swift 類解檔。

Objective-C 選擇器(Selectors)

一個(gè) Objective-C 選擇器類型指向一個(gè) Objective-C 的方法名。在 Swift 時(shí)代,Objective-C 的選擇器被Selector結(jié)構(gòu)體替代。你可以通過(guò)字符串創(chuàng)建一個(gè)選擇器,比如let mySelector: Selector = "tappedButton:"。因?yàn)樽址軌蜃詣?dòng)轉(zhuǎn)換為選擇器,所以你可以把字符串直接傳遞給接受選擇器的方法。

復(fù)制代碼 代碼如下:

//Swift
import UIKit
class MyViewController: UIViewController {
    let myButton = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 50))

    init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
        super.init(nibName: nibName, bundle: nibBundle)
        myButton.targetForAction("tappedButton:", withSender: self)
    }

    func tappedButton(sender: UIButton!) {
        println("tapped button")
    }
}

注意: performSelector:方法和相關(guān)的調(diào)用選擇器的方法沒(méi)有導(dǎo)入到 Swift 中因?yàn)樗鼈兪遣话踩摹?/p>

如果你的 Swift 類繼承自 Objective-C 的類,你的所有方法都可以用作 Objective-C 的選擇器。另外,如果你的 Swift 類不是繼承自 Objective-C,如果你想要當(dāng)選擇器來(lái)使用你就需要在前面添加@objc關(guān)鍵字,詳情請(qǐng)看Swift 類型兼容性

相關(guān)文章

  • 深入理解Swift中的訪問(wèn)控制關(guān)鍵字

    深入理解Swift中的訪問(wèn)控制關(guān)鍵字

    這篇文章主要給大家介紹了Swift中訪問(wèn)控制關(guān)鍵字的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-03-03
  • Swift語(yǔ)言中的一些訪問(wèn)控制設(shè)置詳解

    Swift語(yǔ)言中的一些訪問(wèn)控制設(shè)置詳解

    這篇文章主要介紹了Swift語(yǔ)言中的一些訪問(wèn)控制設(shè)置詳解,是Swift入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • Swift 中如何使用 Option Pattern 改善可選項(xiàng)的 API 設(shè)計(jì)

    Swift 中如何使用 Option Pattern 改善可選項(xiàng)的 API 設(shè)計(jì)

    這篇文章主要介紹了Swift 中如何使用 Option Pattern 改善可選項(xiàng)的 API 設(shè)計(jì),幫助大家更好的進(jìn)行ios開(kāi)發(fā),感興趣的朋友可以了解下
    2020-10-10
  • Swift中非可選的可選值類型處理方法詳解

    Swift中非可選的可選值類型處理方法詳解

    Optional是Objective-C沒(méi)有的數(shù)據(jù)類型,是蘋果引入到Swift語(yǔ)言中的全新類型,它的特點(diǎn)就和它的名字一樣:可以有值,也可以沒(méi)有值,當(dāng)它沒(méi)有值時(shí),就是nil。下面這篇文章主要給大家介紹了關(guān)于Swift中非可選的可選值類型處理方法的相關(guān)資料,需要的朋友可以參考下。
    2017-11-11
  • Swift實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

    Swift實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了Swift實(shí)現(xiàn)簡(jiǎn)單計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Swift中實(shí)現(xiàn)點(diǎn)擊、雙擊、捏、旋轉(zhuǎn)、拖動(dòng)、劃動(dòng)、長(zhǎng)按手勢(shì)的類和方法介紹

    Swift中實(shí)現(xiàn)點(diǎn)擊、雙擊、捏、旋轉(zhuǎn)、拖動(dòng)、劃動(dòng)、長(zhǎng)按手勢(shì)的類和方法介紹

    這篇文章主要介紹了Swift中實(shí)現(xiàn)點(diǎn)擊、雙擊、捏、旋轉(zhuǎn)、拖動(dòng)、劃動(dòng)、長(zhǎng)按手勢(shì)的類和方法介紹,本文分別給出了各種手勢(shì)的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-01-01
  • Swift Json實(shí)例詳細(xì)解析

    Swift Json實(shí)例詳細(xì)解析

    這篇文章主要給大家介紹了關(guān)于Swift Json解析的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Swift中swift中的switch 語(yǔ)句

    Swift中swift中的switch 語(yǔ)句

    本文給大家介紹了swift中的swift語(yǔ)句,以及和c語(yǔ)音中的寫法區(qū)別,本文介紹的非常詳細(xì),需要的朋友參考下
    2016-12-12
  • 如何刪掉編程中的?Switch?語(yǔ)句

    如何刪掉編程中的?Switch?語(yǔ)句

    多重方法是一種有趣的方式,可以幫你擺脫令人討厭的?switch,這篇文章主要介紹了如何刪掉編程中的?Switch?語(yǔ)句,需要的朋友可以參考下
    2022-09-09
  • Swift4.0 Array數(shù)組詳解

    Swift4.0 Array數(shù)組詳解

    這篇文章主要為大家詳細(xì)介紹了Swift4.0 Array數(shù)組的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09

最新評(píng)論

页游| 赫章县| 双峰县| 平凉市| 临沧市| 田阳县| 方正县| 白玉县| 漯河市| 青岛市| 大港区| 平湖市| 景德镇市| 维西| 祁连县| 奈曼旗| 洛扎县| 洮南市| 宁夏| 广南县| 凌云县| 尖扎县| 洛南县| 侯马市| 昆明市| 贵定县| 波密县| 合阳县| 石楼县| 兴安县| 文安县| 竹溪县| 营口市| 盐源县| 沁水县| 佛山市| 睢宁县| 盐源县| 合作市| 修武县| 探索|