日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS viewDidUnload方法

發布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS viewDidUnload方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://blog.csdn.net/chun799/article/details/8951694

在iOS6中,viewDidUnload回調方法被Deprecated掉了。查看蘋果的文檔,可以看到如下的說明。


那么,原本在viewDidUnload中的代碼應該怎么處理?在iOS6中,又應該怎么處理內存警告?帶著這些問題,我查找了一些資料,在此分享給大家。

?

分析

?

在iOS4和iOS5系統中,當內存不足,應用收到Memory warning時,系統會自動調用當前沒在界面上的ViewController的viewDidUnload方法。?通常情況下,這些未顯示在界面上的ViewController是UINavigationController Push棧中未在棧頂的ViewController,以及UITabBarViewController中未顯示的子ViewController。這些View Controller都會在Memory Warning事件發生時,被系統自動調用viewDidUnload方法。

?

在iOS6中,由于viewDidUnload事件在iOS6下任何情況都不會被觸發,所以蘋果在文檔中建議,應該將回收內存的相關操作移到另一個回調函數:didReceiveMemoryWarning?中。但是如果你僅僅是把以前寫到viewDidUnload函數中的代碼移動到didReceiveMemoryWarning函數中,那么你就錯了。以下是一個?錯誤的示例代碼?:

- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; if([self isViewLoaded] && ![[self view] window]) { [self setView:nil]; }

?

這篇文章解釋了iOS6不推薦你將view置為nil的原因(鏈接打開需要FQ),?翻譯過來如下:

UIView有一個CALayer的成員變量,CALayer是具體用于將自己畫到屏幕上的。如下圖所示:?


CALayer是一個bitmap圖象的容器類,當UIView調用自身的drawRect時,CALayer才會創建這個bitmap圖象類。

?

具體占內存的其實是一個bitmap圖象類,CALayer只占48bytes, UIView只占96bytes。而一個iPad的全屏UIView的bitmap類會占到12M的大小!

?

在iOS6時,當系統發出MemoryWarning時,系統會自動回收bitmap類。但是不回收UIView和CALayer類。這樣即回收了大部分內存,又能在需要bitmap類時,通過調用UIView的drawRect:?方法重建。

?

內存優化

?

另外文章中還提到蘋果的操作系統對此做的一個內存優化技巧,解釋如下:

?

當一段內存被分配時,它會被標記成“In use“,?以防止被重復使用。當內存被釋放時,這段內存會被標記成”Not?inuse”,這樣,在有新的內存申請時,這塊內存就可能被分配給其它變量。

?

CALayer包括的具體的bitmap內容的私有成員變量類型為CABackingStore,?當收到MemroyWarning時,CABackingStore類型的內存區會被標記成volatile類型(這里的volatile和?C以及Java語言的volatile不是一個意思),volatile表示,這塊內存可能被再次被原變量重用。

?

這樣,有了上面的優化后,當收到Memoy Warning時,雖然所有的CALayer所包含的bitmap內存都被標記成volatile了,但是只要這塊內存沒有再次被復用,那么當需要重建bitmap內存時,?它就可以直接被復用,而避免了再次調用?UIView的?drawRect:?方法。

?

總結

?

所以,簡單來說,對于iOS6,你不需要做任何以前viewDidUnload的事情,更不需要把以前viewDidUnload的代碼移動到?didReceiveMemoryWarning方法中。

?

引用WWDC 2012?中的一段話來給viewDidUnload說再見:

?

The method viewWillUnload and viewDidUnload. We’re not going to call them anymore. I mean, there’s kind of a cost-benifit equation and analysis that we went through. In the early days, there was a real performance need for us to ensure that on memory warnings we unloaded views. There was all kinds of graphics and backing stores and so forth that would also get unloaded. We now unload those independently of the view, so it isn’t that big of a deal for us for those to be unloaded, and there were so many bugs where there would be pointers into。

總結

以上是生活随笔為你收集整理的iOS viewDidUnload方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 电影中文字幕 | 免费观看成年人网站 | 国产精品久久久久久久av | 久久亚洲AV成人无码国产人妖 | 亚洲视频中文 | 久久电影一区二区 | heyzo亚洲 | 顶级黑人搡bbw搡bbbb搡 | 欧美做爰猛烈床戏大尺度 | 日韩电影在线观看一区 | 嫩草影院懂你的 | av五月天在线 | 国内一级视频 | 欧美三级一区 | 又白又嫩毛又多15p 超碰在线一区 | 国产免费观看一区 | 中文字幕一区二区人妻电影丶 | 播放灌醉水嫩大学生国内精品 | 夜夜爽www| 在线观看av一区二区 | 色吧五月天 | 国产一级性生活 | 欧美一区二区三区激情 | 国产l精品国产亚洲区久久 午夜青青草 | 久久在线中文字幕 | 不卡一区在线 | 精品人妻av一区二区三区 | 国产午夜精品免费一区二区三区视频 | 国产欧美一级 | 性v天堂 | 91精品国产自产精品男人的天堂 | 国产精品丝袜一区 | 国产18禁黄网站免费观看 | 国产精品黄色网 | 一区二区三区在线免费视频 | 丰满大肥婆肥奶大屁股 | 大尺度做爰呻吟舌吻情头 | 亚洲国产伊人 | 国产伦精品一区二区三区在线 | 一道本在线播放 | 人妻少妇精品中文字幕av蜜桃 | 国产成人精品视频一区二区 | 在线观看黄色片网站 | 日韩免费高清视频 | 日日拍夜夜拍 | 国产老肥熟 | 欧美69式性猛交 | 日本福利一区二区 | 亚洲国产精品综合 | 久久久久亚洲av片无码下载蜜桃 | 亚洲一级黄色片 | 大桥未久在线视频 | 日韩精品一区二区在线看 | 黄色av片三级三级三级免费看 | 可乐操亚洲 | 亚洲综合视频一区 | 91av俱乐部| 色哟哟黄色 | 亚洲综合五区 | 精品免费久久久 | 天堂中文在线观看 | 欧美三级午夜理伦三级小说 | 午夜精品成人毛片非洲 | 国产手机在线 | 污网站在线播放 | 国产成人在线观看网站 | 午夜影视剧场 | 少妇一级淫片免费观看 | 2018天天弄| 日韩mv欧美mv国产网站 | 中文字幕日韩精品一区 | 久久99久久99精品免观看软件 | 本道综合精品 | www.热久久 | 四虎av影视 | 欧美日韩国产成人在线 | 精品亚洲乱码一区二区 | 在线观看日韩国产 | 久久久久人妻一道无码AV | 激情无码人妻又粗又大 | 国产一级二级三级视频 | 肉丝美足丝袜一区二区三区四 | 亚洲国产中文字幕 | 欧美久草| 男人操女人免费视频 | 亚洲无卡视频 | 国产一级久久久 | 亚洲字幕成人中文在线观看 | 午夜视频在线观看免费视频 | 一区二区三区视频免费 | 欧美xxxx8888 | 成人精品在线视频 | 国产精品网站免费 | 精品一区二区三区视频在线观看 | 国产一区亚洲二区三区 | 91视频播放器 | 献给魔王伊伏洛基亚吧动漫在线观看 | 91成人在线观看喷潮 | 深夜av在线 |