精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

iOS經典面試題總結--內存管理

移動開發
我根據自己的情況做了一下總結,答案是我總結的,如有答的不好的地方,希望批評指正以及交流,謝謝!

[[163414]]

我根據自己的情況做了一下總結,答案是我總結的,如有答的不好的地方,希望批評指正以及交流,謝謝!

內存管理

1.什么是ARC?

ARC是automatic reference counting自動引用計數,在程序編譯時自動加入retain/release。在對象被創建時retain count+1,在對象被release時count-1,當count=0時,銷毀對象。程序中加入autoreleasepool對象會由系統自動加上autorelease方法,如果該對象引用計數為0,則銷毀。那么ARC是為了解決MRC手動管理內存存在的一些而誕生的。

MRC下內存管理的缺點:

  • 釋放一個堆內存時,首先要確定指向這個堆空間的指針都被release了。(避免提前釋放)
  • 釋放指針指向的堆空間,首先要確定哪些指向同一個堆,這些指針只能釋放一次。(避免釋放多次,造成內存泄露)
  • 模塊化操作時,對象可能被多個模塊創建和使用,不能確定***由誰釋放
  • 多線程操作時,不確定哪個線程***使用完畢。

雖然ARC給我們編程帶來的很多好多,但也可能出現內存泄露。如下面兩種情況:

  • 循環參照:A有個屬性參照B,B有個屬性參照A,如果都是strong參照的話,兩個對象都無法釋放。
  • 死循環:如果有個ViewController中有***循環,也會導致即使ViewController對應的view消失了,ViewController也不能釋放。

2.block一般用那個關鍵字修飾,為什么?

block一般使用copy關鍵之進行修飾,block使用copy是從MRC遺留下來的“傳統”,在MRC中,方法內容的block是在棧區的,使用copy可以把它放到堆區。但在ARC中寫不寫都行:編譯器自動對block進行了copy操作。

3.用@property聲明的NSString(或NSArray,NSDictionary)經常使用copy關鍵字,為什么?如果改用strong關鍵字,可能造成什么問題?

答:用@property聲明 NSString、NSArray、NSDictionary 經常使用copy關鍵字,是因為他們有對應的可變類型:NSMutableString、NSMutableArray、NSMutableDictionary,他們之間可能進行賦值操作,為確保對象中的字符串值不會無意間變動,應該在設置新屬性值時拷貝一份。

如果我們使用是strong,那么這個屬性就有可能指向一個可變對象,如果這個可變對象在外部被修改了,那么會影響該屬性。

copy此特質所表達的所屬關系與strong類似。然而設置方法并不保留新值,而是將其“拷貝” (copy)。 當屬性類型為NSString時,經常用此特質來保護其封裝性,因為傳遞給設置方法的新值有可能指向一個NSMutableString類的實例。這個類是NSString的子類,表示一種可修改其值的字符串,此時若是不拷貝字符串,那么設置完屬性之后,字符串的值就可能會在對象不知情的情況下遭人更改。所以,這時就要拷貝一份“不可變” (immutable)的字符串,確保對象中的字符串值不會無意間變動。只要實現屬性所用的對象是“可變的” (mutable),就應該在設置新屬性值時拷貝一份。

4.runloop、autorelease pool以及線程之間的關系。

每個線程(包含主線程)都有一個Runloop。對于每一個Runloop,系統會隱式創建一個Autorelease pool,這樣所有的release pool會構成一個像callstack一樣的一個棧式結構,在每一個Runloop結束時,當前棧頂的Autorelease pool會被銷毀,這樣這個pool里的每個Object會被release。

5.@property 的本質是什么?ivar、getter、setter 是如何生成并添加到這個類中的。

“屬性”(property)有兩大概念:ivar(實例變量)、存取方法(access method=getter),即@property = ivar + getter + setter。

例如下面的這個類:

  1. @interface WBTextView :UITextView   
  2. @property (nonatomic,copy)NSString *placehold;   
  3. @property (nonatomic,copy)UIColor *placeholdColor;   
  4. @end 

類完成屬性的定以后,編譯器會自動編寫訪問這些屬性的方法(自動合成autosynthesis),上述代碼寫出來的類等效與下面的代碼:

  1. @interface WBTextView :UITextView   
  2. - (NSString *)placehold;   
  3. -(void)setPlacehold:(NSString *)placehold;   
  4. -(UIColor *)placeholdColor;   
  5. -(void)setPlaceholdColor:(UIColor *)placeholdColor;   
  6. @end 

詳細介紹見:http://blog.csdn.net/jasonjwl/article/details/49427377

6.分別寫一個setter方法用于完成@property (nonatomic,retain)NSString *name和@property (nonatomic,copy) NSString *name

retain屬性的setter方法是保留新值并釋放舊值,然后更新實例變量,令其指向新值。順序很重要。假如還未保留新值就先把舊值釋放了,而且兩個值又指向同一個對象,先執行的release操作就可能導致系統將此對象***回收。

  1. -(void)setName:(NSString *)name 
  2.     [name retain]; 
  3.     [_name release]; 
  4.     _name = name; 
  5. -(void)setName:(NSString *)name 
  6.       
  7.     [_name release]; 
  8.     _name = [name copy]; 

7.說說assign vs weak,_block vs _weak的區別

assign適用于基本數據類型,weak是適用于NSObject對象,并且是一個弱引用。

assign其實頁可以用來修飾對象,那么為什么不用它呢?因為被assign修飾的對象在釋放之后,指針的地址還是存在的,也就是說指針并沒有被置為nil。如果在后續內存分配中,剛才分到了這塊地址,程序就會崩潰掉。而weak修飾的對象在釋放之后,指針地址會被置為nil。

_block是用來修飾一個變量,這個變量就可以在block中被修改。

_block:使用_block修飾的變量在block代碼塊中會被retain(ARC下,MRC下不會retain)

_weak:使用_weak修飾的變量不會在block代碼塊中被retain

8.請說出下面代碼是否有問題,如果有問題請修改?

  1. @autoreleasepool { 
  2.         for (int i=0; i[largeNumber; i++) { (因識別問題,該行代碼中尖括號改為方括號代替) 
  3.             Person *per = [[Person alloc] init]; 
  4.             [per autorelease]; 
  5.         } 
  6.     } 

內存管理的原則:如果對一個對象使用了alloc、copy、retain,那么你必須使用相應的release或者autorelease。咋一看,這道題目有alloc,也有autorelease,兩者對應起來,應該沒問題。但autorelease雖然會使引用計數減一,但是它并不是立即減一,它的本質功能只是把對象放到離他最近的自動釋放池里。當自動釋放池銷毀了,才會向自動釋放池中的每一個對象發送release消息。這道題的問題就在autorelease。因為largeNumber是一個很大的數,autorelease又不能使引用計數立即減一,所以在循環結束前會造成內存溢出的問題。

解決方案如下:

  1. @autoreleasepool { 
  2.         for (int i=0; i[100000; i++) { (因識別問題,該行代碼中尖括號改為方括號代替) 
  3.             @autoreleasepool { 
  4.             Person *per = [[Person alloc] init]; 
  5.             [per autorelease]; 
  6.         } 
  7.       } 
  8.     } 

在循環內部再加一個自動釋放池,這樣就能保證每創建一個對象就能及時釋放。

9.請問下面代碼是否有問題,如有問題請修改?

  1. @autoreleasepool { 
  2.         NSString *str = [[NSString alloc] init]; 
  3.         [str retain]; 
  4.         [str retain]; 
  5.         str = @"jxl"
  6.         [str release]; 
  7.         [str release]; 
  8.         [str release]; 

這道題跟第8題一樣存在內存泄露問題,1.內存泄露 2.指向常量區的對象不能release。

指針變量str原本指向一塊開辟的堆區空間,但是經過重新給str賦值,str的指向發生了變化,由原來指向堆區空間,到指向常量區。常量區的變量根本不需要釋放,這就導致了原來開辟的堆區空間沒有釋放,照成內存泄露。

10.什么情況下使用weak關鍵字,相比assign有什么不同?什么情況使用weak關鍵字?

  • 在ARC中,在有可能出現循環引用的時候,往往要通過讓其中一端使用weak來解決。比如delegate代理
  • 自身已經對它進行一次強引用,沒有必要再強引用一次,此時也會使用weak,自定義控件屬性一般也使用weak。

不同點:

  • weak此特質表明該屬性定義了一種“非擁有關系”。為這種屬性設置新值時,設置方法既不保留新值,也不釋放舊值。此特性與assign一樣,然而在屬性所指的對象遭到推毀時,屬性值也會清空。而assign的“設置方法”只會執行針對“純量類型” (scalar type,例如 CGFloat 或 NSlnteger 等)的簡單賦值操作。
  • assign可以用非OC對象,而weak必須用于OC對象。

11.內存管理語義(assign、strong、weak等的區別)

  • assign “設置方法” 只會執行針對“純量”的簡單賦值操作。
  • strong  此特質表明該屬性定義了一種“擁有關系”。為這種屬性設置新值時,設置方法會先保留新值,并釋放舊值,然后再將新值設置上去。
  • weak 此特質表明該屬性定義了一種“非擁有關系”。為這種屬性設置新值時,設置方法既不保留新值,也不釋放舊值。此特質同assign類似,然而在屬性所指的對象遭到推毀時,屬性值也會清空。
  • unsafe_unretained  此特質的語義和assign相同,但是它適用于“對象類型”,該特質表達一種“非擁有關系”,當目標對象遭到推毀時,屬性值不會自動清空,這一點與weak有區別。
  • copy 此特質所表達的所屬關系與strong類似。然而設置方法并不保留新值,而是設置方法并不保留新值,而是將其“拷貝”。當屬性類型為NSString*時,經常用此特質來保護其封裝性,因為傳遞給設置方法的新值有可能指向一個NSMutableString類的實例。這個類是NSString的子類,表示一種可以修改其值的字符串,此時若是不拷貝字符串,那么設置完屬性之后,字符串的值就可能會在對象不知情的情況下遭人更改。所以,這時就要拷貝一份“不可變”的字符串,確保對象中的字符串值不會無意間變動。只要實現屬性所用的對象是“可變的”,就應該在設置新屬性值時拷貝一份。

后續會繼續增加內存管理方面的內容以及多線程等內容,持續更新中....,敬請期待!

責任編輯:倪明 來源: CocoaChina
相關推薦

2024-04-28 08:23:18

2024-04-15 08:34:43

2014-07-28 14:00:40

linux面試題

2021-02-23 12:43:39

Redis面試題緩存

2021-12-01 09:25:58

SQL數據庫數據庫基礎

2025-08-22 10:45:57

Go字符串語言

2016-05-05 17:45:43

Spring面試題答案

2024-07-24 08:38:07

2015-10-19 09:35:23

iOS面試

2024-04-01 08:34:23

2025-06-18 09:01:27

Linux系統啟動系統

2021-06-27 22:48:28

Redis數據庫內存

2010-04-15 11:54:55

面試

2015-08-19 09:35:49

Java main面試題

2020-06-04 14:40:40

面試題Vue前端

2009-08-28 09:29:02

2024-04-09 08:32:58

Java面試題線程

2011-03-24 13:27:37

SQL

2025-05-29 08:10:00

Linux進程系統

2023-11-13 07:37:36

JS面試題線程
點贊
收藏

51CTO技術棧公眾號

91精品国产黑色紧身裤美女| 久久精品亚洲精品国产欧美kt∨ | 欧洲激情综合| 777奇米四色成人影色区| 国产1区2区3区中文字幕| 香蕉视频黄在线观看| 蜜臀精品久久久久久蜜臀| 欧美成人激情在线| 一级片手机在线观看| 国产欧美自拍| 亚洲午夜在线观看视频在线| 性欧美.com| 亚洲男女视频在线观看| 久久综合五月| 久久久久久久久久久久久久久久久久av| 手机av免费看| 中文字幕一区二区三区中文字幕 | 亚洲色欲色欲www| 国模一区二区三区私拍视频| 一区不卡在线观看| 亚洲一区二区免费看| 麻豆乱码国产一区二区三区| 女~淫辱の触手3d动漫| 日本在线中文字幕一区二区三区| 亚洲综合一区在线| 一区二区日本| yjizz视频网站在线播放| 国产91精品久久久久久久网曝门| 国产成人亚洲精品| 国产69精品久久久久久久久久| 亚洲成av人电影| 夜夜嗨av一区二区三区免费区 | 偷拍一区二区| 日韩欧美中文一区| 久久国产这里只有精品| 在线观看欧美日韩电影| 亚洲午夜国产一区99re久久| 中文字幕在线亚洲三区| 黄视频在线观看免费| 北岛玲一区二区三区四区| 91精品国产99久久久久久红楼| 亚洲视频在线免费播放| 日韩成人午夜电影| 欧美在线观看一区二区三区| 久久久久久久久久久久久久免费看 | 青青草成人在线观看| 4p变态网欧美系列| 成年人午夜视频| 狠狠综合久久| 久久人人爽人人| 九九九免费视频| 欧美激情综合| 欧美区在线播放| 国产一区二区视频在线观看免费| 国产精品久久天天影视| 深夜福利日韩在线看| 亚洲无人区码一码二码三码的含义 | 国产精品一区二区亚洲| 日本成人小视频| 国产亚洲精品激情久久| 亚洲成人黄色av| 极品美女一区二区三区| 国产亚洲欧美日韩精品| 免费黄色片网站| 不卡中文字幕| 日韩资源在线观看| 欧美视频www| 欧美久色视频| 国内精品久久久久| www.伊人久久| 久久久久久穴| 国产美女91呻吟求| av一级黄色片| 岛国精品在线观看| 久久伦理网站| 可以在线观看的av网站| 国产精品丝袜一区| 免费看污污视频| 91九色国产在线播放| 欧美日韩国产精品一区二区三区四区 | 久草在线资源站手机版| 色综合久久久久综合| 日韩av片网站| 欧美在线在线| 日韩激情av在线免费观看| 欧美另类z0zx974| 自拍偷拍欧美| 日本sm极度另类视频| 日韩xxx视频| 国产精品一色哟哟哟| 久久av一区二区三区亚洲| 狠狠狠综合7777久夜色撩人| 亚洲欧美一区二区三区国产精品| 国产精品又粗又长| 岛国一区二区| 亚洲精品国产精品国自产观看浪潮| 自拍偷拍亚洲天堂| 欧美人与禽猛交乱配视频| 91av在线免费观看视频| 国产又粗又大又爽视频| av激情综合网| 亚洲免费av网| 国产欧美一区二区三区精品酒店| 欧美一区二区三区思思人| 呦呦视频在线观看| 国产精品久久久久久久免费观看| 538国产精品一区二区在线| 亚洲天堂网视频| 成人免费视频国产在线观看| 亚洲人一区二区| 理论不卡电影大全神| 欧美日韩二区三区| 日韩人妻无码一区二区三区| 欧美不卡一区| 国产精品入口日韩视频大尺度| 日本精品999| 亚洲欧美激情在线| 99视频在线免费| 懂色av一区二区| 久久亚洲精品网站| 91视频久久久| 久久综合九色欧美综合狠狠| 日韩久久久久久久久久久久| 国产精品久久久久久久久免费高清 | 久久久久久午夜| 91麻豆成人精品国产| 26uuu精品一区二区在线观看| 在线观看17c| 天天综合在线观看| 国产亚洲精品高潮| 中文字幕第四页| 成人精品一区二区三区四区| 少妇熟女一区二区| 未满十八勿进黄网站一区不卡| 国产性猛交xxxx免费看久久| 国产微拍精品一区| 成人美女视频在线观看18| 成人毛片100部免费看| 精品69视频一区二区三区| 亚洲网站在线观看| 欧美bbbbbbbbbbbb精品| 成人福利视频网站| 91网站在线观看免费| 中文在线综合| 久久久久久香蕉网| 人妻丰满熟妇av无码区hd| 亚洲二区视频在线| 中文字幕在线观看91| 一区二区三区四区电影| 91天堂在线观看| 蜜桃视频在线观看免费视频网站www| 狠狠色狠色综合曰曰| 国产偷人妻精品一区| 国产视频一区欧美| 欧美大香线蕉线伊人久久| 中文一区一区三区高中清不卡免费| 日韩电影在线观看中文字幕| 中文字幕激情小说| 91老师国产黑色丝袜在线| 内射国产内射夫妻免费频道| 美女精品一区最新中文字幕一区二区三区| 97超视频免费观看| 黄色在线小视频| 欧美日韩成人综合天天影院| 日韩国产第一页| 国产精一区二区三区| 欧美视频在线观看视频| 三级精品视频| 国产狼人综合免费视频| 国产午夜精品久久久久免费视| 欧美一区二区私人影院日本| 亚洲国产精品成人无久久精品| 99精品国产一区二区三区不卡| 欧美aⅴ在线观看| 欧美色女视频| 99九九电视剧免费观看| sm在线播放| 在线成人一区二区| 国产日韩在线观看一区| 亚洲高清免费观看高清完整版在线观看 | 久久99国产综合精品免费| 国产日韩欧美麻豆| 中文字幕av一区二区三区人妻少妇 | 穿情趣内衣被c到高潮视频| 亚洲免费一区三区| 欧美在线视频观看| 91小视频xxxx网站在线| 日韩高清不卡av| 97久久人国产精品婷婷| 亚洲成人黄色影院| 亚洲毛片亚洲毛片亚洲毛片| 国产精品影视在线| 狠狠热免费视频| 午夜亚洲福利| 日韩一区不卡| 这里视频有精品| 国产精品极品美女在线观看免费| 在线观看三级视频| 亚洲性69xxxbbb| 丰满人妻一区二区| 在线免费观看日韩欧美| 毛片aaaaa| 国产精品丝袜一区| 成人免费毛片日本片视频| 精久久久久久久久久久| 美女av免费在线观看| 综合久久婷婷| 亚洲成人在线视频网站| 女一区二区三区| 亚洲精品免费网站| 久久精品97| 国产aaa精品| 多野结衣av一区| 久色乳综合思思在线视频| 国产日本在线| 日韩精品久久久久久福利| 国产av无码专区亚洲av| 在线免费不卡视频| 久久久精品免费看| 亚洲无人区一区| 超碰手机在线观看| 最新日韩av在线| 最近中文字幕在线mv视频在线| 成人污视频在线观看| 三区视频在线观看| 全部av―极品视觉盛宴亚洲| 妺妺窝人体色www在线小说| 国产精品二区影院| 日本精品免费视频| 成人直播大秀| 日韩一二三区不卡在线视频| 国产精品一区二区av交换| 精品免费视频123区| 国产精品网在线观看| 国产精品美女诱惑| 懂色av一区二区| 国产精品三区www17con| 欧美日韩黄网站| 亚洲最大av在线| 国产精品久一| 91免费在线视频| 国产精品亚洲欧美日韩一区在线 | 国产激情视频在线播放| 777久久久精品| 国产精品视频久久久久久| 欧美高清www午色夜在线视频| 中文在线资源天堂| 欧美日韩免费不卡视频一区二区三区 | 国产一区亚洲| 美女扒开大腿让男人桶| 亚洲激精日韩激精欧美精品| 91精品国产91久久久久麻豆 主演| 狠狠色丁香久久综合频道| xxxx18hd亚洲hd捆绑| 国产精品夜夜夜| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 可以免费看不卡的av网站| 国产一区二区视频免费在线观看| 巨乳诱惑日韩免费av| 日韩精品你懂的| 国产一区三区三区| 成人做爰69片免费| 97精品国产露脸对白| caopeng视频| 国产精品欧美一区喷水| 亚洲伦理一区二区三区| 一区二区三区在线播| 亚洲免费激情视频| 日韩欧美999| 在线免费观看日韩视频| 欧美一区二区三区在线| 丰满少妇高潮在线观看| 国产丝袜视频一区| 亚洲搞黄视频| 久久久久久久成人| 偷拍中文亚洲欧美动漫| 成人疯狂猛交xxx| 粉嫩一区二区三区四区公司1| 久久av免费观看| 婷婷久久国产对白刺激五月99| 国产免费内射又粗又爽密桃视频| 日韩视频久久| 亚洲精品久久久中文字幕| 国产成人99久久亚洲综合精品| 国产 中文 字幕 日韩 在线| 中文字幕亚洲不卡| 日本三级午夜理伦三级三| 欧日韩精品视频| 性中国xxx极品hd| 亚洲一区二区久久久| caopeng在线| 日韩美女在线看| 欧美电影在线观看一区| 日本在线视频不卡| 欧美视频网站| 性刺激的欧美三级视频| 粉嫩13p一区二区三区| 日韩毛片无码永久免费看| 亚洲最新视频在线观看| 中文字幕av免费观看| 亚洲成人动漫在线播放| 男人在线资源站| 69精品小视频| 麻豆久久一区| 视频一区视频二区视频三区高| 激情婷婷欧美| 欧美日韩理论片| 日本一区免费视频| 男人的天堂一区二区| 欧美一区二区国产| 福利片在线看| 茄子视频成人在线| 97se亚洲| av动漫在线播放| 久久99热狠狠色一区二区| 国产中文字幕一区二区| 亚洲一区在线播放| 国产又粗又猛又爽又黄的| 亚洲欧美另类在线观看| av手机在线观看| 999国产在线| 天天影视综合| 亚洲精品性视频| 国产日韩欧美不卡| 日本视频www| 精品久久人人做人人爰| 18视频在线观看| 成人激情视频在线播放| 成人影院在线| 爱情岛论坛成人| 久久久久综合网| 国产成人精品777777| 日韩av在线免费看| 蜜桃视频在线观看播放| 国产乱码精品一区二区三区中文| 亚洲色图网站| 亚洲高清av一区二区三区| 亚洲欧洲色图综合| 97精品人妻一区二区三区| 中文字幕亚洲欧美一区二区三区| 电影一区电影二区| 日韩电影免费观看高清完整| 日韩高清在线不卡| 亚洲高潮女人毛茸茸| 欧美性xxxxx极品少妇| 国产裸舞福利在线视频合集| 日本午夜人人精品| 啪啪亚洲精品| 国产91色在线观看| 国产精品你懂的在线欣赏| 91精品国自产| 欧美成人一二三| swag国产精品一区二区| 国产在线精品91| 久久精品一区二区| 中文字幕在线播放不卡| xx视频.9999.com| 色妞ww精品视频7777| 激情小视频网站| 91免费观看国产| 无码一区二区三区| 日韩一区二区三区xxxx| 麻豆精品一区| 欧美精品久久久久久久免费| 2017欧美狠狠色| 在线观看国产黄| 另类色图亚洲色图| 久久精品色综合| 免费观看成人网| 自拍av一区二区三区| 亚洲成a人片77777精品| 青青精品视频播放| 欧美wwwww| 稀缺小u女呦精品呦| 欧美性猛xxx| 精品黄色免费中文电影在线播放| 国产精品乱码视频| 日韩综合在线视频| 91日韩中文字幕| 亚洲精品自在久久| 四虎精品永久免费| 欧美黑人经典片免费观看| 中文字幕免费不卡在线| 亚洲精品国产精| 国产精品久久二区| 激情国产一区| 操她视频在线观看| 亚洲精品国产精品国自产观看浪潮| 激情亚洲小说| 99精品人妻少妇一区二区| 中文字幕一区二区三区不卡在线| 人妻91麻豆一区二区三区| 国产精品一区二区三区免费视频 | 亚洲成a人v欧美综合天堂下载| 国产区av在线| 国产精品一区二区a| 乱一区二区av| av黄色在线播放| 九九热精品在线| 91亚洲国产|