亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

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

2020-03-09 17:52:16
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了在Swift中使用Objective-C編寫類、繼承Objective-C類等操作方法介紹,需要的朋友可以參考下
 

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

繼承Objective-C的類

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

復制代碼代碼如下:

// SWIFT
import UIKit

 

class MySwiftViewController: UIViewController {
    // 定義類
}

 

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

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

復制代碼代碼如下:

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

 

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

編寫構造器和析構器

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

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

集成Interface Builder

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

使用Outlets和Action

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

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

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

 

復制代碼代碼如下:

// SWIFT
class MyViewController: UIViewController {

 

    @IBOutlet var button: UIButton

    @IBOutlet var textFields: UITextField[]

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

 

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

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

注意:只能針對框架里對象進行實時渲染

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

 

復制代碼代碼如下:

// SWIFT

 

@IBDesignable

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

 

指明屬性特性

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

強類型和弱類型

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

讀/寫和只讀

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

拷貝

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

實現Core Data Managed Object子類

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



注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产精品人人做人人爱| 欧美在线中文字幕| 国产精品免费观看在线| 一区二区欧美日韩视频| 国产精品视频专区| 国产在线999| 欧美成年人视频网站| 精品视频在线观看日韩| 国产免费观看久久黄| 色樱桃影院亚洲精品影院| 精品日韩中文字幕| 国产精品午夜国产小视频| 最近日韩中文字幕中文| 成人a在线观看| 一区二区中文字幕| 麻豆国产精品va在线观看不卡| 久久久999国产| 美女少妇精品视频| 日韩电影中文字幕在线观看| 欧美亚洲第一区| 亚洲一区二区久久| 97香蕉超级碰碰久久免费软件| 欧美尤物巨大精品爽| 人人爽久久涩噜噜噜网站| 国产精品美女主播| 色吧影院999| 最近免费中文字幕视频2019| 国产精品欧美久久久| 日韩精品在线播放| 国产精品久久77777| 少妇高潮久久久久久潘金莲| 日本久久久a级免费| 在线电影欧美日韩一区二区私密| 亚洲成人精品久久久| 国产一区二区在线免费| 久久九九亚洲综合| 中文字幕自拍vr一区二区三区| 欧美国产高跟鞋裸体秀xxxhd| 精品国产依人香蕉在线精品| 久久综合网hezyo| 国产乱肥老妇国产一区二| 久久噜噜噜精品国产亚洲综合| 岛国av一区二区| 亚洲国产精品成人va在线观看| 欧美日韩亚洲一区二| 永久免费毛片在线播放不卡| 国产成人综合精品| 国产精品免费视频xxxx| 欧美成人午夜影院| 国产亚洲欧洲高清一区| 亚洲理论片在线观看| 富二代精品短视频| 日韩美女中文字幕| 精品二区三区线观看| 国产精品日韩一区| 国产一区二区三区日韩欧美| 久久亚洲影音av资源网| 亚洲美女www午夜| 亚洲区在线播放| 欧美日韩激情美女| 性日韩欧美在线视频| 91精品久久久久久久久不口人| 国产精品老女人精品视频| 国产婷婷色综合av蜜臀av| 国产网站欧美日韩免费精品在线观看| 日韩在线观看免费全集电视剧网站| 亚洲欧洲av一区二区| 国产精品∨欧美精品v日韩精品| 国产精品香蕉av| 国产精品视频中文字幕91| 国产精品一区二区性色av| 性欧美长视频免费观看不卡| 狠狠操狠狠色综合网| 中文字幕少妇一区二区三区| 欧美精品日韩www.p站| 日本欧美在线视频| www.久久色.com| 精品国产欧美一区二区三区成人| 久久久av亚洲男天堂| 欧美国产视频日韩| 97超级碰碰人国产在线观看| 黑人狂躁日本妞一区二区三区| 一本色道久久综合狠狠躁篇怎么玩| 日韩大陆欧美高清视频区| 中文字幕欧美精品日韩中文字幕| 国内精品模特av私拍在线观看| 精品国内亚洲在观看18黄| 国产成人精品一区| 亚洲欧美日韩国产成人| 性色av一区二区三区免费| 国产精品对白刺激| 国产经典一区二区| 欧美伊久线香蕉线新在线| 国产精品免费观看在线| 日韩在线视频国产| 亚洲石原莉奈一区二区在线观看| 亚洲视频一区二区三区| 日韩精品免费视频| 久久久国产一区二区| 国产脚交av在线一区二区| 国色天香2019中文字幕在线观看| 亚洲自拍在线观看| 欧美乱妇高清无乱码| 91九色视频在线| 欧美另类精品xxxx孕妇| 在线看日韩av| 久久久亚洲网站| 欧美另类老女人| 国产精品入口免费视频一| 国产91成人video| 国内精品免费午夜毛片| 国产精品久久久精品| 欧美日韩国产精品一区二区不卡中文| 亚洲免费av片| 奇米成人av国产一区二区三区| 91精品久久久久久久久久久久久| 中文字幕在线看视频国产欧美| 久久久久久69| 91免费视频国产| 国产剧情久久久久久| 亚洲第一区第二区| 91亚洲精品一区二区| 亚洲第一国产精品| 亚洲精品中文字| 丁香五六月婷婷久久激情| 久久久国产在线视频| 一区二区在线免费视频| 精品毛片三在线观看| 国产精品三级网站| 国产不卡在线观看| 亚洲free性xxxx护士hd| 搡老女人一区二区三区视频tv| 欧美精品激情在线观看| 中文字幕欧美在线| 国产99久久精品一区二区 夜夜躁日日躁| 欧美孕妇孕交黑巨大网站| 疯狂做受xxxx欧美肥白少妇| 美女999久久久精品视频| 97精品伊人久久久大香线蕉| 亚洲最新av在线| 欧美一区视频在线| 欧美一区二区影院| 欧美激情亚洲另类| 日韩欧美成人区| 午夜精品一区二区三区视频免费看| 美日韩丰满少妇在线观看| 日韩av手机在线看| 欧美激情视频一区二区三区不卡| 最近中文字幕mv在线一区二区三区四区| 成人激情视频在线观看| 亚洲精品日韩激情在线电影| 欧美国产日韩xxxxx| 欧美—级高清免费播放| 欧美黄色片免费观看| 中文字幕亚洲无线码在线一区| 国内精品小视频| 久久久精品亚洲| 色综合久久88色综合天天看泰| 青青草国产精品一区二区| 日韩一区视频在线| 成人中文字幕+乱码+中文字幕| 国产一区二区黑人欧美xxxx| 97精品一区二区三区| 欧美性猛交xxxx免费看久久久|