OC與Swift區(qū)別

  • OC一個(gè)類(lèi)分.h頭文件和.m實(shí)現(xiàn)文件,Swift只有一個(gè).swift文件,文件數(shù)量上Swift比OC少;

  • Swift是類(lèi)型安全的語(yǔ)言,也就是變量等的類(lèi)型必須明確;

  • Swift引入了可選類(lèi)型(Optionals),用于處理值缺失的情況??蛇x表示"那兒有一個(gè)值,并且它等于 x "或者"那兒沒(méi)有值"。

  • Swift中的!和? 當(dāng)確定可選類(lèi)型確實(shí)包含值之后,可以在可選的名字后面加一個(gè)感嘆號(hào)(!)來(lái)獲取值。這個(gè)感嘆號(hào)表示"我知道這個(gè)可選有值,請(qǐng)使用它。"這被稱(chēng)為可選值的強(qiáng)制解析(forced unwrapping),?表示可選變量即使轉(zhuǎn)換不成功也不會(huì)報(bào)錯(cuò),變量值為nil

  • Swift獨(dú)有的元組類(lèi)型 元組(tuples)把多個(gè)值組合成一個(gè)復(fù)合值。元組內(nèi)的值可以是任意類(lèi)型,并不要求是相同類(lèi)型

  • Swift中使用let修飾常量,使用var修飾變量

  • OC中非0即是真,Swift中true是真,false是假

  • Swift的打印print可以print(lastName),不用OC那種%@、%d等

  • OC與Swift共用一套運(yùn)行時(shí)環(huán)境,Swift的類(lèi)型可以橋接到OC上,反之亦然,兩者可以互相引用混合編程。

  • Swift與OC都是用ARC(自動(dòng)引用計(jì)數(shù))來(lái)管理內(nèi)存

枚舉:

OC的枚舉相當(dāng)于這個(gè)文件中的一個(gè)局部變量,且只能是整型(默認(rèn)從0開(kāi)始),也可指定整型值;在同一文件中,不同的枚舉中,枚舉名稱(chēng)不可以相同。
Swift的枚舉,其枚舉值支持整型、浮點(diǎn)型、字符串、布爾類(lèi)型四種;創(chuàng)建時(shí)不分配默認(rèn)整數(shù)值;可以通過(guò)rawValue訪(fǎng)問(wèn)其原始值;可以通過(guò)Week(rawValue:6)創(chuàng)建一個(gè)枚舉實(shí)例

import UIKit

enum Week: Int {
    case Mon
    case Tues
    case Wes
    case Thu
    case Fri
    case Sat
    case Sun
}

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        //可以通過(guò)rawValue訪(fǎng)問(wèn)其原始值
        let fri = Week.Fri.rawValue
        print("This is ==\(fri)")
        
        //可以通過(guò)Week(rawValue:6)創(chuàng)建一個(gè)枚舉實(shí)例
        let ins = Week(rawValue: 6)
        print("E \(ins ?? Week.Sat)")
    }
}
打印:
This is ==4
E Sun
數(shù)組

NSArray是OC中的類(lèi)型,屬于引用類(lèi)型,Array是Swift中的結(jié)構(gòu)體類(lèi)型(struct),屬于值類(lèi)型
Swift數(shù)組是否可以被修改是通過(guò)var和let關(guān)鍵字決定的;OC中數(shù)組是否可以被修改是通過(guò)NSArray和NSMutableArray這兩個(gè)類(lèi)型來(lái)決定的;
Swift中數(shù)組,數(shù)據(jù)值被存儲(chǔ)進(jìn)入到某個(gè)數(shù)組之前類(lèi)型必須明確,可以顯式的類(lèi)型標(biāo)注或者類(lèi)型推斷,Swift的數(shù)組不必是對(duì)象類(lèi)型,可以存儲(chǔ)基本類(lèi)型,而OC的數(shù)組必須是對(duì)象類(lèi)型;

var cities = ["Beijing", "Shanghai", "Guangzhou"]
print(cities)
        
cities.append("Shenzhen")
print(cities)
        
var numbers: [Int] = []
numbers.append(888)
print(numbers)
打印:
["Beijing", "Shanghai", "Guangzhou"]
["Beijing", "Shanghai", "Guangzhou", "Shenzhen"]
[888]

字典

Swift的字典是否可以被修改是通過(guò)var和let關(guān)鍵字來(lái)決定的;
OC的字典是以NSDictionary和NSMutableDictionary來(lái)決定的;
Swift的字典的key可以是Int類(lèi)型,而OC的字典的key一般是字符串類(lèi)型

var dic1: [String: String] = ["name": "Jane", "age": "20"]
print(dic1)
        
dic1["height"] = "180"
print(dic1)
        
var dic2: [Int: String] = [1:"2222"]
print(dic2)
打印:
["name": "Jane", "age": "20"]
["name": "Jane", "age": "20", "height": "180"]
[1: "2222"]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容