精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩精品成人| 日本一本在线免费福利| 久热成人在线视频| 欧美不卡视频一区发布| 又大又长粗又爽又黄少妇视频| 欧美性video| 久久久久久久久久久电影| 国产精品日本精品| 久久久www成人免费毛片| 亚洲亚洲免费| 日韩一区二区免费电影| 成人观看免费完整观看| 国产在线1区| 2020国产精品| 97在线资源站| 亚洲午夜无码久久久久| 欧美精品综合| 在线播放日韩专区| 国产白袜脚足j棉袜在线观看| 欧美日韩亚洲国产| 午夜精品视频一区| 欧美 另类 交| 高清毛片在线看| 不卡的av电影| 91天堂在线视频| 久久影视中文字幕| 亚洲精选久久| 欧美另类99xxxxx| 国产又粗又长免费视频| 亚洲第一福利专区| 亚洲大胆美女视频| 天天操夜夜操很很操| 精品欧美一区二区三区在线观看 | 国产精品成人无码免费| 超碰精品在线观看| 欧美日韩精品专区| 三级a在线观看| 在线天堂新版最新版在线8| 一区二区三区欧美久久| 一区二区三区四区视频在线观看| 久久免费看视频| 99久久免费精品高清特色大片| 亚洲a区在线视频| 一级特黄色大片| 日韩二区三区在线观看| 清纯唯美亚洲综合| 久久国产视频精品| 国产日韩欧美一区| 91av在线看| 日操夜操天天操| 欧美aa国产视频| 美女av一区二区| 午夜剧场免费在线观看| 外国成人激情视频| 日韩视频在线免费| 91九色丨porny丨极品女神| 91亚洲国产成人久久精品| 在线中文字幕日韩| 色屁屁草草影院ccyy.com| 国产一区二区区别| 一区二区欧美久久| 一级免费黄色录像| 天天综合亚洲| 另类美女黄大片| 免费网站看av| 好看不卡的中文字幕| 久久久免费在线观看| 久久网一区二区| 国产亚洲亚洲| 国产精品久久久久秋霞鲁丝| 中文字幕免费播放| 国内久久精品视频| 成人av男人的天堂| 欧美 日韩 综合| 99久久久无码国产精品| 欧美午夜免费| 91伦理视频在线观看| 中文字幕字幕中文在线中不卡视频| 亚洲欧美日韩不卡一区二区三区| 国产福利在线播放麻豆| 亚洲一区二区不卡免费| 内射国产内射夫妻免费频道| 性欧美gay| 这里只有精品视频在线观看| 三级黄色片播放| 久久九九热re6这里有精品| 亚洲欧美日韩一区二区在线 | 婷婷色综合网| 久久久久久久久久久免费| 日本特黄特色aaa大片免费| 性欧美长视频| 成人啪啪免费看| 欧美视频一二区| 中文字幕欧美日韩一区| 亚洲色婷婷久久精品av蜜桃| 天堂√8在线中文| 欧美日韩国产小视频在线观看| 欧美国产日韩另类| 日韩大尺度在线观看| 中文字幕精品网| 久久久精品国产sm调教| 玖玖精品视频| 成人欧美一区二区| 国产高清免费av在线| 亚洲欧美偷拍卡通变态| 男人天堂999| 精品国产亚洲一区二区三区在线| 日韩精品中文字幕在线| 精品人妻伦九区久久aaa片| 国产精品视区| 成人免费看片网站| 91xxx在线观看| 欧美日韩另类在线| 亚洲丝袜在线观看| 奇米影视亚洲| 日产日韩在线亚洲欧美| 亚洲av无码乱码在线观看性色 | 国产精品一区二区亚洲| 一区二区三区高清视频在线观看| 成人免费看片视频| 国产私人尤物无码不卡| 亚洲风情在线资源站| 亚洲欧美偷拍另类| 亚洲福利网站| 欧美激情中文网| 国产精品久久久久久久久毛片 | 国产精品夜夜嗨| 色噜噜狠狠一区二区三区| 绿色成人影院| 精品国内片67194| 日本在线一级片| 蜜臀av一区二区| 日韩精品一区二区三区色偷偷| 6699嫩草久久久精品影院| 91精选在线观看| 成人三级视频在线观看| 日韩成人dvd| 日本一区视频在线观看免费| 热色播在线视频| 亚洲福利视频免费观看| 欧美精品一区二区成人| 韩日av一区二区| 自拍另类欧美| 色噜噜成人av在线| 日韩专区中文字幕| 在线观看视频中文字幕| 国产亲近乱来精品视频| 北条麻妃在线视频| 欧美亚洲在线日韩| 国产精品免费观看在线| 91网在线播放| 4hu四虎永久在线影院成人| 日韩一卡二卡在线观看| 韩国欧美国产1区| 成人短视频在线看| 麻豆精品一区| 欧美激情在线有限公司| 日韩一级免费视频| 疯狂做受xxxx欧美肥白少妇| 亚洲av无码成人精品国产| 亚洲永久网站| 日韩欧美电影一区二区| 国产韩日精品| 按摩亚洲人久久| 国产又粗又猛又爽又黄的视频一| 亚洲男人天堂一区| 无码人妻一区二区三区一| 最新成人av网站| 欧洲精品国产| 久久三级毛片| 欧美日韩第一页| 无码国产精品96久久久久| 欧美体内谢she精2性欧美| 人妻无码一区二区三区| 视频在线在亚洲| 亚洲区一区二区三区| 国产精品va视频| 久久久久久久网站| 国产高清视频在线观看| 欧美精品 日韩| 久久精品视频日本| 久久久美女毛片| 日本r级电影在线观看| 激情久久综合| 亚洲成人自拍| 亚州一区二区| 国产精品福利网| 日本三级在线观看网站| 日韩av在线看| 中文字幕在线日亚洲9| 一区二区三区在线免费| 五月天综合视频| 国产美女一区二区三区| 精品久久一二三| 99成人在线视频| 精品国产乱码久久久久久丨区2区 精品国产乱码久久久久久蜜柚 | 亚洲GV成人无码久久精品| 国产精品乱人伦| 国产情侣久久久久aⅴ免费| 蜜桃久久av| 亚洲精品少妇一区二区| 国产欧美日韩精品一区二区免费| 91久久精品国产| 欧美www.| 午夜精品理论片| 欧美黄色激情| 亚洲人成免费电影| 亚洲精品视频91| 欧美日韩另类一区| 国产寡妇亲子伦一区二区三区四区| 亚洲欧洲综合另类| 久久美女免费视频| 99国产精品久久久久| 在线一区二区不卡| 日韩成人一级片| 欧美性久久久久| 欧美日韩一区二区高清| 一区二区不卡在线观看| 久久最新网址| 精品一区日韩成人| 日本在线视频一区二区三区| 国产精品女视频| 裤袜国产欧美精品一区| 久久频这里精品99香蕉| 黄色网址在线免费观看| 色99之美女主播在线视频| 亚洲AV第二区国产精品| 精品对白一区国产伦| 99热这里只有精品在线观看| 精品视频在线免费观看| 亚洲av无码精品一区二区| 午夜精品久久久久久不卡8050| 日本少妇高清视频| 国产精品视频观看| 美国黑人一级大黄| 国产午夜精品一区二区三区嫩草 | 国产伦精品一区二区三区视频痴汉| 一本到高清视频免费精品| www.国产成人| 午夜精品视频一区| 日韩av男人天堂| 亚洲超碰精品一区二区| 动漫精品一区一码二码三码四码| 亚洲品质自拍视频| 青春草免费视频| 亚洲精品中文字幕在线观看| 亚洲最大的黄色网址| 一区二区中文字幕在线| 51精品免费网站| 亚洲视频在线一区二区| 美女的奶胸大爽爽大片| 亚洲综合一二区| 精品无码m3u8在线观看| 亚洲一区二区三区免费视频| 日本三级黄色大片| 精品毛片网大全| 无码人妻丰满熟妇奶水区码| 色乱码一区二区三区88| 日本精品入口免费视频| 欧美日韩亚洲综合一区二区三区| 这里只有久久精品视频| 欧美日韩国产片| 99产精品成人啪免费网站| 日韩欧美中文字幕公布| 亚洲国产精品久久人人爱潘金莲| 日韩精品中文字幕一区二区三区 | 7799精品视频天天看| 欧美怡红院视频| 国产影视一区二区| 日韩欧美国产三级| 天天干天天舔天天射| 亚洲图片欧美日产| 国产二区三区在线| 91精品国产91久久久久久不卡| 中文字幕在线官网| 国产欧美日韩免费| 四虎精品一区二区免费| 成人av电影免费| 精品成人影院| 国产成人亚洲综合无码| 国产精品美女久久久浪潮软件| 国产精品天天av精麻传媒| 国产在线视频不卡二| 国产精品入口麻豆| 国产女主播一区| 欧美日韩中文字幕在线观看| 精品久久久久人成| 亚洲在线免费观看视频| 精品国产3级a| 日本精品在线| 97视频免费在线看| 免费成人高清在线视频| 国产一区精品在线| 日韩精品1区| 你真棒插曲来救救我在线观看| 三级一区在线视频先锋 | 日韩欧美亚洲天堂| 美女看a上一区| 捆绑裸体绳奴bdsm亚洲| 中文字幕中文字幕一区| 日韩精品一区三区| 欧美精品v日韩精品v韩国精品v| 午夜影院免费视频| 欧美成在线视频| 成人国产网站| 精品国产乱码久久久久久郑州公司| 久久激情电影| 国产a级一级片| 国产不卡视频一区| 日韩免费av一区| 欧美丝袜第一区| 日本黄色大片视频| 久久久电影免费观看完整版| 久久sese| 精品国产一区二区三| 午夜精品剧场| 色www免费视频| 久久免费看少妇高潮| 四虎永久在线精品| 日韩精品中文字幕在线一区| 欧美被日视频| 国产不卡av在线| 特黄特色欧美大片| 国产黄色片免费在线观看| 国产精品99久久久久久有的能看| 手机av在线不卡| 色琪琪一区二区三区亚洲区| 凸凹人妻人人澡人人添| 欧美精品videossex性护士| av在线精品| 国产精品h视频| 久久精品国产亚洲aⅴ| 国产精品免费无码| 欧美午夜女人视频在线| 深夜福利在线视频| 538国产精品一区二区免费视频| jizz性欧美23| 国产精品成人久久电影| 国产不卡在线视频| 国产在线观看成人| 欧美不卡一区二区| 日本中文字幕中出在线| 国产福利久久精品| 亚洲茄子视频| 国产老熟女伦老熟妇露脸| 香蕉影视欧美成人| 香蕉国产在线视频| 热久久99这里有精品| 亚洲美女久久| 三级在线免费看| 中文字幕一区二区三区在线不卡| 中文字幕第三页| 久久精品国产亚洲一区二区| 成人国产精品久久| 日本中文字幕一级片| 成人天堂资源www在线| 日本在线小视频| 亚洲欧美www| 91九色综合| 五月天在线免费视频| 懂色av一区二区三区免费看| 一区二区三区视频免费看| 亚洲免费伊人电影在线观看av| 欧美片第一页| 在线综合视频网站| 国产高清在线精品| 亚州国产精品视频| 亚洲无线码在线一区观看| 99久久er| 好吊色视频988gao在线观看| 不卡影院免费观看| 国产一级片免费在线观看| 色噜噜狠狠狠综合曰曰曰| 美女国产精品久久久| 日韩精品 欧美| 国产精品视频在线看| www.av网站| 欧美主播福利视频| 97偷自拍亚洲综合二区| www.四虎精品| 在线看不卡av| 在线h片观看| 欧美日韩最好看的视频| 国产在线视频一区二区三区| 日本最新中文字幕| 色噜噜国产精品视频一区二区| 97se亚洲国产一区二区三区| www.四虎成人| 亚洲精品日韩一| 全色精品综合影院| 91久久国产精品| 噜噜噜在线观看免费视频日韩| 五月综合色婷婷| 亚洲久久久久久久久久| 激情不卡一区二区三区视频在线| 成人免费在线小视频| 中文字幕一区二区三区在线播放| 污污网站在线免费观看| 91啪国产在线| 日韩福利视频导航|