歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Swift中KVO(監聽)的使用方法及注意事項

相信研究swift語言的開發者都多多少少了解或者精通Objective—C語言,熟練掌握Objective—C語言的開發者,在學習swift語言的過程中,是比較快速,而又輕松的。本人就是一位熟練掌握OC語言,後開始研究的swift。在學習swift語言的過程中,筆者建議有OC基礎的開發者,在寫swift的代碼過程中,再寫一下OC中的代碼,二者相互比較,相信你能找到快速學會swift語言的方法。資深,有耐心和有天賦的開發者,相信能在一周左右,能夠運用swift開發項目。其中消耗的時間,也只是個別地方的學習,了解並注意。

我這次寫的是swift中的監聽即KVO的用法,一開始我是先寫成OC的代碼,然後轉化成swift的代碼的。在轉化過程中發現一些問題,費了一定時間去研究,去思考,去找資料。一下是swift中KVO中所需要注意的問題(僅個人測試所總結的,代碼有不對之處望指正,期望共同交流)。

1,在寫swift的KVO的過程中,其不能監聽基本數據類型的屬性,若想監聽需將其改成NSNumber類型,或其它類型,否則監聽的代理方法不走。

2,在寫swift的KVO的過程中,被監聽的屬性必須用“dynamic”修飾,否則監聽的代理方法不走。

3,在寫swift的KVO的過程中,要保證監聽者和被監聽者同時存在(考慮到其生命周期)。

4,在寫swift的KVO的過程中,要確保最後移除觀察者,防止內存洩露。

//添加監聽的方法    注意,此處監聽的age屬性,是一個number類型

_view1.addObserver(self, forKeyPath: "age", options: NSKeyValueObservingOptions.New, context: &myContext);

override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer) {

}

//移除監聽的方法

override func viewDidDisappear(animated: Bool) {

super.viewDidDisappear(animated);

//移除監聽

self.removeObserver(self, forKeyPath: "age", context: &myContext);

}

下面關於Swift的內容你可能也喜歡

Ubuntu 14.04.4 下安裝 Swift 2.2.1  http://www.linuxidc.com/Linux/2016-05/131249.htm

Ubuntu 15.10安裝部署Swift開發環境  http://www.linuxidc.com/Linux/2016-01/126995.htm 

Swift 的變化:從 2.2 到 3.0 會帶來什麼  http://www.linuxidc.com/Linux/2015-12/126440.htm 

Swift 正式開源,同時開源 Swfit 核心庫和包管理器 http://www.linuxidc.com/Linux/2015-12/125847.htm 

Apple Swift學習教程  http://www.linuxidc.com/Linux/2014-09/106420.htm 

使用 Swift 構建一個 iOS 的郵件應用 http://www.linuxidc.com/Linux/2014-08/105542.htm 

Swift 2.0開源化  http://www.linuxidc.com/Linux/2015-06/118594.htm 

Linux下搭建Swift語言開發學習環境 http://www.linuxidc.com/Linux/2015-12/125983.htm 

Swift 的詳細介紹:請點這裡 

Copyright © Linux教程網 All Rights Reserved