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

在Swift中使用Objective-C編寫類、繼承Objective-C類

 更新時間:2014年07月21日 10:21:09   投稿:junjie  
這篇文章主要介紹了在Swift中使用Objective-C編寫類、繼承Objective-C類等操作方法介紹,需要的朋友可以參考下

互用性(互操作性)使開發(fā)者可以定義融合了 Objective-C 語言特性的Swift類。編寫 Swift 類時,不僅可以繼承 Objective-C 語言編寫的父類,采用 Objective-C 的協(xié)議,還可以利用 Objective-C 的一些其它功能。這意味著,開發(fā)者可以基于 Objective-C 中已有的熟悉、可靠的類、方法和框架來創(chuàng)建 Swift 類,并結(jié)合 Swift 提供的現(xiàn)代化和更有效的語言特點對其進(jìn)行優(yōu)化。

繼承Objective-C的類

在 Swift 中,開發(fā)者可以定義一個子類,該子類繼承自使用 Objective-C 編寫的類。創(chuàng)建該子類的方法是,在 Swift 的類名后面加上一個冒號(:),冒號后面跟上 Objective-C 的類名。

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

// SWIFT
import UIKit

class MySwiftViewController: UIViewController {
    // 定義類
}

開發(fā)者能夠從 Objective-C 的父類中繼承所有的功能。如果開發(fā)者要覆蓋父類中的方法,不要忘記使用override關(guān)鍵字。
采用協(xié)議

在 Swift 中,開發(fā)者可以采用 Objective-C 中定義好的協(xié)議。和 Swift 協(xié)議一樣,所有 Objective-C 協(xié)議都寫在一個用逗號隔開的列表中,跟在所在類的父類名后面(如果它有父類的話)。

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

// SWIFT
class MySwiftViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    // 定義類
}

Objective-C 協(xié)議與 Swift 協(xié)議使用上是一致的。如果開發(fā)者想在 Swift 代碼中引用 UITableViewDelegate協(xié)議,可以直接使用UITableViewDelegate(跟在 Objective-C 中引用id<UITableViewDelegate\>是等價的)。

編寫構(gòu)造器和析構(gòu)器

Swift 的編譯器確保在初始化時,構(gòu)造器不允許類里有任何未初始化的屬性,這樣做能夠增加代碼的安全性和可預(yù)測性。另外,與 Objective-C 語言不同,Swift 不提供單獨的內(nèi)存分配方法供開發(fā)者調(diào)用。當(dāng)你使用原生的 Swift 初始化方法時(即使是和 Objective-C 類協(xié)作),Swift 會將 Objective-C 的初始化方法轉(zhuǎn)換為 Swift 的初始化方法。關(guān)于如何實現(xiàn)開發(fā)者自定義構(gòu)造器的更多信息,請查看構(gòu)造器

當(dāng)開發(fā)者希望在類被釋放前,執(zhí)行額外的清理工作時,需要執(zhí)行一個析構(gòu)過程來代替dealloc方法。在實例被釋放前,Swift 會自動調(diào)用析構(gòu)器來執(zhí)行析構(gòu)過程。Swift 調(diào)用完子類的析構(gòu)器后,會自動調(diào)用父類的析構(gòu)器。當(dāng)開發(fā)者使用 Objective-C 類或者是繼承自 Objective-C 類的 Swift 類時,Swift 也會自動為開發(fā)者調(diào)用這個類的父類里的dealloc方法。關(guān)于如何實現(xiàn)開發(fā)者自定義析構(gòu)器的更多信息,請查看析構(gòu)器。

集成Interface Builder

Swift 編譯器包含一些屬性,使得開發(fā)者的 Swift 類集成了 Interface Builder 里的一些特色功能。和 Objective-C 里一樣,你能在 Swift 里面使用 OutLets,actions 和實時渲染(live rendering)。

使用Outlets和Action

使用 Outlets 和 Action 可以連接源代碼和 Interface Builder 的 UI 對象。在Swift里面使用 Outlets 和 Action,需要在屬性和方法聲明前插入@IBOutlet或者@IBAction關(guān)鍵字。聲明一個 Outlet集合同樣是用@IBOutlet屬性,即為類型指定一個數(shù)組。

當(dāng)開發(fā)者在 Swift 里面聲明了一個 Outlet 時,Swift 編譯器會自動將該類型轉(zhuǎn)換為弱(weak)、隱式(implicitly)、未包裝(unwrapped)的 optional(Object-c里面對應(yīng)指針類型)數(shù)據(jù)類型,并為它分配一個初始化的空值nil。實際上,編譯器使用@IBOutlet weak var name: Type! = nil來代替 @IBOutlet var name: Type。編譯器將該類型轉(zhuǎn)換成了弱(weak)、隱式(implicitly)、未包裝(unwrapped)的 optional 類型,因此開發(fā)者就不需要在構(gòu)造器中為該類型分配一個初始值了。當(dāng)開發(fā)者從故事板(storyboard)或者xib文件里面初始化對象 class 后,定義好的 Outlet 和這些對象連接在一起了,所以,這些 Outlet 是隱式的,未包裝的。由于創(chuàng)建的 outlets 一般都是弱關(guān)系,因此默認(rèn) outlets 是弱類型。

例如,下面的 Swift 代碼聲明了一個擁有 Outlet、Outlets 集合和 Action 的類:

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

// SWIFT
class MyViewController: UIViewController {

    @IBOutlet var button: UIButton

    @IBOutlet var textFields: UITextField[]

    @IBAction func buttonTapped(AnyObject) {
        println("button tapped!")
    }
}

在buttonTapped方法中,消息發(fā)送者的信息沒有被使用,因此可以省略該方法的參數(shù)名。
實時渲染(live rendering)

開發(fā)者可以在Interface Builder中用@IBDesignable和@IBInspectable來創(chuàng)建生動、可交互的自定義視圖(view)。開發(fā)者繼承UIView或者NSView來自定義一個視圖(view)時,可以在類聲明前添加@IBDesignable屬性。當(dāng)你在 Interface Builder 里添加了自定義的視圖后(在監(jiān)視器面板的自定義視圖類中進(jìn)行設(shè)置),Interface Builder 將在畫布上渲染你自定義的視圖。

注意:只能針對框架里對象進(jìn)行實時渲染

你也可以將@IBInspectable屬性添加到和用戶定義的運(yùn)行時屬性兼容的類型屬性里。這樣,當(dāng)開發(fā)者將自定義的視圖添加到 Interface Builder 里后,就可以在監(jiān)視器面板中編輯這些屬性。

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

// SWIFT

@IBDesignable

class MyCustomView: UIView {
    @IBInspectable var textColor: UIColor
    @IBInspectable var iconHeight: CGFloat
    /* ... */
}

指明屬性特性

在 Objective-C 中,屬性通常都有一組特性(Attributes)說明來指明該屬性的一些附加信息。在 Swift 中,開發(fā)者可以通過不同的方法來指明屬性的這些特性。

強(qiáng)類型和弱類型

Swift 里屬性默認(rèn)都是強(qiáng)類型的。使用weak關(guān)鍵字修飾一個屬性,能指明其對象存儲時是一個弱引用。該關(guān)鍵字僅能修飾 optional 對象類型。更多的信息,請查閱特性。

讀/寫和只讀

在 Swift 中,沒有readwrite和readonly特性。當(dāng)聲明一個存儲型屬性時,使用let修飾其為只讀;使用var修飾其為可讀/寫。當(dāng)聲明一個計算型屬性時,為其提供一個 getter 方法,使其成為只讀的;提供 getter 方法和 setter 方法,使其成為可讀/寫的。更多信息,請查閱屬性。

拷貝

在 Swift 中,Objective-C 的copy特性被轉(zhuǎn)換為@NSCopying屬性。這一類的屬性必須遵守 NSCopying協(xié)議。更多信息,請查閱特性

實現(xiàn)Core Data Managed Object子類

Core Data 提供了基本存儲和實現(xiàn)NSManagedObject子類的一組屬性。在 Core Data 模型中,與管理對象子類相關(guān)的特性或者關(guān)系的每個屬性定義之前,將@NSmanaged特性加入。與 Objective-C 里面的 @dynamic特性類似,@NSManaged特性告知 Swift 編譯器,這個屬性的存儲和實現(xiàn)將在運(yùn)行時完成。但是,與@dynamic不同的是,@NSManaged特性僅在 Core Data 支持中可用。

相關(guān)文章

  • Swift之運(yùn)算符重載示例詳解

    Swift之運(yùn)算符重載示例詳解

    這篇文章主要為大家介紹了Swift之運(yùn)算符重載示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Swift中循環(huán)語句中的轉(zhuǎn)移語句 break 和 continue

    Swift中循環(huán)語句中的轉(zhuǎn)移語句 break 和 continue

    這篇文章主要介紹了Swift中循環(huán)語句中的轉(zhuǎn)移語句 break 和 continue,本文通過實例代碼給大家介紹的非常詳細(xì),需要的的朋友參考下
    2016-12-12
  • SwiftUI?引導(dǎo)頁界面實現(xiàn)示例

    SwiftUI?引導(dǎo)頁界面實現(xiàn)示例

    這篇文章主要為大家介紹了SwiftUI?引導(dǎo)頁界面實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 利用Swift實現(xiàn)各類的CATransition動畫詳解

    利用Swift實現(xiàn)各類的CATransition動畫詳解

    CATransition動畫主要在過渡時使用,比如兩個頁面層級改變的時候添加一個轉(zhuǎn)場效果。CATransition分為兩類,一類是公開的動畫效果,一類是非公開的動畫效果。這篇文章主要給大家介紹了關(guān)于如何利用Swift實現(xiàn)各類CATransition動畫的相關(guān)資料,需要的朋友可以參考下。
    2017-09-09
  • Swift中defer關(guān)鍵字推遲執(zhí)行示例詳解

    Swift中defer關(guān)鍵字推遲執(zhí)行示例詳解

    這篇文章主要給大家介紹了關(guān)于Swift中defer關(guān)鍵字推遲執(zhí)行的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • swift相冊相機(jī)的權(quán)限處理示例詳解

    swift相冊相機(jī)的權(quán)限處理示例詳解

    在iOS7以后要打開手機(jī)攝像頭或者相冊的話都需要權(quán)限,在iOS9中更是更新了相冊相關(guān)api的調(diào)用,那么下面這篇文章主要給大家介紹了關(guān)于swift相冊相機(jī)權(quán)限處理的相關(guān)資料,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考下。
    2017-10-10
  • 解決 Xcode 6-Beta2 智能提示bug

    解決 Xcode 6-Beta2 智能提示bug

    最近開始學(xué)習(xí) Swift ,因為感覺這個真是個不錯的東西,有很多新的特性,雖然 Titanium 之后也必定會支持,但總有不少東西要使用原生開發(fā)才可以實現(xiàn),所以就乘這個新語言出來之際開始學(xué)習(xí)啦!
    2014-07-07
  • Swift利用AFN實現(xiàn)封裝網(wǎng)絡(luò)請求詳解

    Swift利用AFN實現(xiàn)封裝網(wǎng)絡(luò)請求詳解

    網(wǎng)絡(luò)請求工具是我們經(jīng)常用到的工具類,所以下面這篇文章主要給大家介紹了關(guān)于Swift利用AFN如何實現(xiàn)封裝網(wǎng)絡(luò)請求的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • swift閉包和OC block類型的使用

    swift閉包和OC block類型的使用

    這篇文章主要介紹了swift閉包和OC block類型的使用,需要的朋友可以參考下
    2017-08-08
  • 淺談swift 4.0中private所發(fā)生的變化

    淺談swift 4.0中private所發(fā)生的變化

    Swift 4是蘋果計劃于2017年秋季推出的最新版本,其主要重點是提供與Swift 3代碼的源兼容性,并努力實現(xiàn)ABI穩(wěn)定性。下面這篇文章主要給大家介紹了關(guān)于swift 4.0中private所發(fā)生的一些變化,需要的朋友可以參考下。
    2017-12-12

最新評論

丰县| 曲麻莱县| 黄龙县| 马边| 舒兰市| 宝应县| 深水埗区| 蒙自县| 辰溪县| 昌平区| 元谋县| 南昌市| 湘阴县| 兰州市| 山西省| 安庆市| 安仁县| 镇雄县| 阳原县| 阿巴嘎旗| 丹东市| 翼城县| 赣榆县| 明水县| 微山县| 玉山县| 三门县| 十堰市| 西华县| 西平县| 扎鲁特旗| 中江县| 马龙县| 晋宁县| 晋城| 淳化县| 巫溪县| 蒙阴县| 平阴县| 清镇市| 棋牌|