1. 程式人生 > >iOS_assign,retain,weak,strong的引用計數區別(附程式碼示例)

iOS_assign,retain,weak,strong的引用計數區別(附程式碼示例)

先做個筆記:

copy:此屬性只對那些實行了NSCopying協議的物件型別有效。

關於這四者的關係,不需要再解釋太多。簡單的一句話:assign和retain是舊版本的語法,新版本的已對應更改為weak和strong。

即:
assign相當於weak,
retain相當於strong。

用strong宣告的屬性賦值給了weak宣告的屬性,當strong釋放的時候,weak會因為它所指向的記憶體過早被釋放而crash。

舉個不恰當又能夠描述的例子:

例項化一個物件後,就會開闢一個記憶體空間(你們懂的),當一個strong屬性指向該記憶體的時候(相當於一個土匪佔山為王:這塊地盤是我的)。小羅羅(weak屬性)可以加入山寨(訪問記憶體)共享地盤(訪問資料),但weak撼動不了strong的強勢。weak可以隨時離開那塊記憶體,但只要strong宣告的屬性一直佔用記憶體就永不被釋放。如果土匪頭目(strong屬性)棄山寨而走(釋放記憶體),小羅羅(weak屬性)沒有了強者投靠只能跟著棄寨離開(釋放記憶體)不再享有寨上的所有東西(訪問資料)。如果山寨有兩個土匪頭目(兩個strong屬性指向同一塊記憶體),就算離開一個,山寨依然在另一個強者手上(記憶體被另一個strong屬性佔用)。

若還是不明白,那就上程式碼了!

Ps:看到有些博文用NSString做的demo,親測結果與他們寫的不一樣,因為字串是個很特殊的東西。所以,在此我自定義一個Student學生類用來演示。

一個strong多個weak,當strong釋放掉的時候,weak所指向的就位空:

一個strong,多個weak,其中一個weak釋放掉,strong保持對記憶體的佔有,weak的釋放也不會使對應的記憶體釋放。 多個strong的時候,不論釋放了多少個strong屬性,只要還有一個保持對記憶體的佔有,記憶體就不會釋放: 多個strong,只有全部的strong都釋放了記憶體,記憶體才會被回收利用。


相關推薦

iOS_assignretainweakstrong引用計數區別程式碼示例

先做個筆記: copy:此屬性只對那些實行了NSCopying協議的物件型別有效。 關於這四者的關係,不需要再解釋太多。簡單的一句話:assign和retain是舊版本的語法,新版本的已對應更改為weak和strong。 即: assign相當於weak, retain相當

成為大數據頂尖程序員先過了這些Hadoop面試題!答案解析

大禮包 雲計 default blank mas 阻止 launcher inpu 建立 導讀:在大數據開發崗位的需求下,工資待遇水漲船高,不少編程人員在面對職業瓶頸期的時候,會選擇轉編程方向發展。你是否已經意識這是你人生中的一個重要轉機?能不能抓住這個時代的機遇,就在於你

什麼是區塊鏈一文看懂區塊鏈架構設計知識圖譜

轉載:https://blog.csdn.net/u011961421/article/details/79098309 前言 區塊鏈作為一種架構設計的實現,與基礎語言或平臺等差別較大。區塊鏈是加密貨幣背後的技術,是當下與VR虛擬現實等比肩的熱門技術之一,

看完48秒動畫讓你不敢再登入HTTP網站完整示例程式碼

在我的 單點登入SSO示例程式碼 一文中,強烈不建議部署HTTP的SSO服務站點。 在此寫個基於網路包嗅探的HTTP會話劫持程式,給大家一個直觀的危害性展示。 示例中,我在一臺Mac上登入58同城,被另一臺Windows上的程式劫持。“黑客”檢視我的資訊暢行無阻,還順手改了我的頭像。 先直接上演示動

2018 BAT春招已經開始已拿Offer的百度阿里的iOS面試總結分享給你面經

前言:隨著各大公司春招的開始,很多小夥伴都行動起來了,因此這篇總結並不一定適合想去創業公司的同學。另外,由於經驗本來就是主觀性極強的東西,加之筆者水平有限,所以如果有不認可的地方,萬望諸君呵呵一笑,拋之腦後。接下來,我就斗膽分享一下自己在準備和參加面試的過程中的收穫、對面試的

一個技術人最重要的是:極客精神好奇心 + 探索欲

重要 大神 net 最大的 程序員 領域 實戰 探索 市場需求 一個技術人,最重要的是:極客精神(好奇心 + 探索欲) 初到社會,面對眾多的IT企業,我們是陌生與好奇的,認為所有企業都是管理一流並且高大上等的。然而工作多年以後你會發現,國內的

我用了7年時間成長為阿裏Java架構師你呢?學習路線圖

架構 後端 Java 編程語言 前言:我用了七年的時間,一步一步走到了現在,中途也有了解過其他的技術,也想過要轉其他的語言,但是最後還是堅持下來走Java這條路,希望我的經歷可以幫助到後來的人,要是覺得對你有幫助的話,可以點贊關註一下。導讀:1、架構師應不應該寫代碼2、為什麽別人的系統總是那麽

從電梯問題看c和c++之間的區別有點懂了錯覺錯覺

命令 上下 能夠 current 表現 靈活 沒有 c++ 16px 磕磕碰碰的也相繼用c和c++構造了不少的電梯了。雖然對自我的表現不滿意,但是總體來說還是有一定的收獲的,對於c和c++之間的區別感覺也摸到了一點點門道了。。。 用c語言構造電梯的步驟: 第一步: 分析這個

寫二十來行python代碼讓圖靈機器人陪你玩耍源碼

python web 爬蟲 微信 機器人 寫二十來行python代碼,讓圖靈機器人陪你玩耍,感覺不是非常的智能。 import os import json import urllib2 class Chat(object): key = "申請的key" # turing123網

關於深度學習這裏有一份入門公開課文末福利

社交網絡 互聯網金融 點擊圖片購書參與文末話題討論,每日贈送異步圖書——異步小編前不久,“逃犯看張學友演唱會被抓”的新聞讓不少人都感慨,原來演唱會還能用來幹這個!其實這都是AI面部識別技術的功勞,在支付、安防等領域,AI面部識別技術有著廣泛的應用。在互聯網金融信貸風險控制中,我們也會借助機器學習和統計

如今的iOS開發者優勝劣汰如何提升讓自己不被淘汰?資料

角度 高效 二進制 新的 編輯器 選擇 形勢 前端工程 作者 序言: 如果從 13 年移動客戶端大火開始算起,至今已經有五個年頭了。現在移動端的形勢也不需要太多的廢話來描述,一句話總結就是:“浪潮退去,誰在裸泳一看就清楚。”我希望借助這篇文章來聊聊在我心目中,移動互聯網下一

幫助小白JDK的安裝與環境變量配置Win 10系統

ssp 安裝 找到 bsp 窗口 9.png 資源 jre jpg 學習JAVA,必須首先安裝一下JDK(java development kit java開發工具包),之後再配置環境變量就可以開始使用JAVA了。 一,安裝JDK 1,可以選擇到官網下載最新版本的JDK,地

當同時安裝Python2和Python3後如何兼容並切換使用詳解比如pip使用

err 完美解決 執行文件 class 需要 提示 改名 launcher 順序查找 由於歷史原因,Python有兩個大的版本分支,Python2和Python3,又由於一些庫只支持某個版本分支,所以需要在電腦上同時安裝Python2和Python3,因此如何讓兩個版

南開大學提出最新邊緣檢測與影象分割演算法精度重新整理記錄開源地址

  作者 | 劉雲、程明明、胡曉偉、邊佳旺等 譯者 | 劉暢 整理 | Jane 出品 | AI科技大本營 近日,南開大學媒體計算實驗室提出的最新邊緣檢測和影象過分割(可用於生成超畫素)被 IEEE PAMI 錄用。研究的第一作者也發微博稱:“這是第一個

來之不易的美團面試結果居然掛了……面試答案

一面 自我介紹 答:自我介紹是面試中唯一的自己主動介紹自己的環節,一定要好好把握好,你資料結構學的號可以手撕一個紅黑樹你就說我資料結構掌握地很好,反正就是要把自己的優勢凸顯出來,比如自己對於java的知識較熟悉,我介紹完自己的本科經歷以後,我就說我是保送到本校繼續讀研究生,然後最末尾會加上自

若是MYsql資料庫沒有其他問題要匯入到jre外部連結包裡資料庫連線問題

 嘗試著將mysql-connector-java-5.1.6-bin.jar的jar包加入E:\Program Files\Java\jdk1.6.0_20\jre\lib\ext資料夾下,問題解決了!!     原來是不僅僅要求將驅動加入

已有的exe始終帶引數執行不需要每次輸入命令列的方法create sfx archive

原始需求:由於讓其他人操作時,可能由於看錯或者是手動輸入錯誤,導致命令列引數並不是符合預期的值,結果不能得到想要的結果 工具:winrar 英文中文都可以(不能使用快壓,快壓沒有這個功能)--自行下載(我的資源裡也可以找到) 操作方法: 開啟rar, 選擇要進行自解壓格式的exe檔案,然

倒計時1天2018 AI開發者報名通道即將關閉參會提醒

參加 2018 AI開發者大會,請點選 ↑↑↑ 隨著 AI 逐漸轉為各大科技巨頭的戰略主戰場,人工智慧技術亦是長立風口,向陽而生。越來越多的發展趨勢表明,未來的人工智慧將逐步邁入廣泛普及階段,繼而深入影響人類日常的生產生活方式,重塑傳統生產結構。為了深入探究人工智慧的技術核心

Linux下Java圖形介面程式中文顯示不正常顯示為方格問題解決

RedHat或其它Linux系統下中文顯示為方格,原因是JRE環境中中文字型設定異常。 1.首先找到JRE所在的目錄,如在RedHat Enterprise 6中的目錄為:/usr/lib/jvm/java-1.6.0/jre 2.將windows中文字型simsun.ttf或simsun.ttc拷

微信小程序報錯不在以下 request 合法域名列表中引起的探索

設置 png quest 補充 logs 語法 htm 屬性 type    最近因為突然對小程序有興趣,然後開始了自學之旅。   在學習的過程當中遇到了一個問題,控制臺報錯,提示:不在以下 request 合法域名列表中,如下圖所示      然後我就開