ios開發(fā)weak ios開發(fā)webview失焦

iOS開發(fā)中的循環(huán)引用

修飾對象不會增加其引用計數(shù),避免了循環(huán)引用。 如果被修飾的對象在某一時機被釋放,會產(chǎn)生 懸垂指針 ,再通過這個指針去訪問原對象的話,會導(dǎo)致內(nèi)存泄露,所以一般不建議用,__unsafe_unretained去解除循環(huán)引用。

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供萊西網(wǎng)站建設(shè)、萊西做網(wǎng)站、萊西網(wǎng)站設(shè)計、萊西網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、萊西企業(yè)網(wǎng)站模板建站服務(wù),十余年萊西做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

造成循環(huán)引用的原因,就是兩個及兩個以上的對象相互強引用,無法釋放。

在iOS開發(fā)中,循環(huán)引用常常發(fā)生在使用Block、Delegate和通知等機制時。為了避免循環(huán)引用,可以使用weak、strong和copy等關(guān)鍵字來修飾對象,明確表達對象之間的擁有關(guān)系。

循環(huán)引用是iOS開發(fā)中經(jīng)常遇到的問題,它指的是兩個或多個對象通過相互之間的強引用,形成了一個保留環(huán),即使已經(jīng)沒有外部對象持有,也無法對其進行釋放操作,也無法釋放其占用的內(nèi)存空間(引用計數(shù)器始終大于0)。

iOS-底層原理26:weak原理

weak 是弱引用, 用weak來修飾、描述所引用對象的計數(shù)器并不會加1, 而且weak會在引用對象被釋放的時候自動置為nil, 這也就避免了野指針訪問壞內(nèi)存而引起崩潰的情況,weak也可以解決循環(huán)引用。

weak是OC中用于打破對象間的循環(huán)引用的一種技術(shù)。 weak 修飾一個變量時,表示該指針變量可以使用但不擁有該對象;及 weak 引用指向?qū)ο髸r,對象的引用計數(shù)并不增加。

weak原理 Runtime 維護了一個 weak表,用于存儲指向某個對象的所有weak指針。weak表 其實是一個 hash(哈希)表,Key 是所指對象的地址,Value是 weak指針 的地址(這個地址的值是所指對象指針的地址)數(shù)組。

weak weak只能用來修飾對象,但是并不持有,引用計數(shù)不會+1。在Runtime中對該屬性進行了操作,指向的內(nèi)存被釋放后(引用計數(shù)為0),指針就會自動=nil,多用于避免循環(huán)引用的地方。

weak_table_t 是全局的弱引用表,將對象id存儲為鍵,將 weak_entry_t 存儲為它們的值。在我們的App中,多個對象會重用同一個 SideTable 節(jié)點,也就是說, weak_table 會存儲多個對象的弱引用信息。

關(guān)于iOS基本屬性修飾符的理解(weak篇)

1、assign assign主要用來修飾基本數(shù)據(jù)類型,例如int,float,NSInteger,CGFloat,儲存在棧中內(nèi)存不需要管理,一般不修飾對象,不然對象內(nèi)存地址被釋放,但是指針不會釋放就會造成野指針。

2、報錯原因:如果我們用 weak 修飾,雖然進行了賦值或者初始化操作,但是引用計數(shù)器是不會加一的,當(dāng)出了作用域,對象就會銷毀,指針置空,這樣我們所持有的屬性(對象)就是野指針。

3、weak_table_t 是全局的弱引用表,將對象id存儲為鍵,將 weak_entry_t 存儲為它們的值。在我們的App中,多個對象會重用同一個 SideTable 節(jié)點,也就是說, weak_table 會存儲多個對象的弱引用信息。

4、Weak+Controller是一種模式設(shè)計模式,簡稱WC模式。主要用于分離組件操作邏輯和組件控制邏輯。其中Weak表示要訪問的操作邏輯組件,它不會調(diào)用任何其它的代碼。

5、__weak一般用在delegate關(guān)系中防止循環(huán)引用或者用來修飾指向由Interface Builder編輯與生成的UI控件。__autoreleasing 表示在autorelease pool中自動釋放對象的引用,和MRC時代autorelease的用法相同。

6、讀寫性修飾符:readwrite readonlyreadwrite:表明這個屬性是可讀可寫的,系統(tǒng)為我們創(chuàng)建這個屬性的setter和getter方法。

本文標(biāo)題:ios開發(fā)weak ios開發(fā)webview失焦
網(wǎng)址分享:http://bm7419.com/article34/dgjoope.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航商城網(wǎng)站、App設(shè)計服務(wù)器托管、建站公司Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)