什么是ARC技術谊却?與GC是否相同?
字數(shù)1041閱讀0評論0喜歡0
ARC 是Automatic Reference Counting的簡稱哑芹,我們稱之為自動引用計數(shù)炎辨,是IOS5之后推出的內(nèi)存管理的新特性,本質(zhì)上還是使用引用計數(shù)來管理對象聪姿,只是在編寫代碼時碴萧,不需要
想對象發(fā)送release或者autorelease方法,也不需要調(diào)用DellOC方法末购,編譯器會在合適的位置自動給用戶生成release消息破喻,GC
的全稱是Garbage collection,內(nèi)存垃圾回收機制,ARC比GC性能好招盲。
iOS中是否支持垃圾回收機制
iOS開發(fā)只支持手動內(nèi)存管理與ARC低缩,Mac開發(fā)支持GC垃圾回收機制,10.8之后棄用了GC曹货,推薦使用ARC
內(nèi)存中的堆區(qū)和棧區(qū)的差別
棧區(qū)有編譯器自動分配釋放咆繁,存放方法的參數(shù)值,局部變量的值等顶籽,堆區(qū)一般有程序員分配與釋放玩般,若不釋放,則內(nèi)存溢出
strong與weak礼饱,_unsafe_unretained與weak的區(qū)別
1.strong
是強引用坏为,weak是弱引用,在ARC中镊绪,使用strong告訴編譯器幫助我們自動插入retain匀伏,weak是普通賦值相當于手動管理內(nèi)存的
assign.
2._unsafe_unretained與weak功能一致,區(qū)別在于當之下你給的對象銷毀后蝴韭,weak會將變量置為nil够颠,防止調(diào)用野指針
ARC存在內(nèi)存泄漏嗎
ARC中如果內(nèi)存管理不當?shù)脑挘瑯訒嬖趦?nèi)存泄漏榄鉴,列入:ARC中也會循環(huán)引用導致內(nèi)存泄漏履磨,OC對象與CoreFoundation類之間橋接時,管理不當也會產(chǎn)生內(nèi)存泄漏
自動釋放池是什么:如何而工作庆尘?
自動釋放池是NSAutorelease累的一個實例剃诅,當想一個對象發(fā)送autorelease消息時,該對象會自動入池驶忌,等待池銷毀時矛辕,將會向池中的所有對象發(fā)送一條release消息,釋放對象
為什么delegate屬性都是assign而不是retain
防止循環(huán)引用,以至于對象無法得到正確的釋放
iOS開發(fā)中數(shù)據(jù)持久性如筛,有哪幾種堡牡?
plist文件寫入抒抬,對象歸檔杨刨,sqlite數(shù)據(jù)庫,coredata
什么是KVC和KVO擦剑?以及他們之間的關系是什么
1.KVC是一種簡介訪問對象實例變量的機制妖胀,該機制可以不通過存取方法就可以訪問對象的實例變量
2.KVO是一種能使得對象獲取到其他對象屬性變化的通知機制。
3.實現(xiàn)KV?O鍵值觀察模式惠勒,赚抡,被觀察的對象必須使用KVC鍵值編碼來修改它的實例變量,這樣擦能被觀察者觀察到纠屋,因此KVC是KVC的基礎或者來說
KVO的實現(xiàn)是建立在KVC的基礎之上的
簡書常見的設計模式:單例涂臣,代理,觀察者售担,工廠
內(nèi)存管理在dealloc方法中赁遗,用release方法好還是用self.xxx=nil好,
使用self.xxx好族铆,因為小調(diào)用了release方法岩四,而且還將變量設置為nil,這樣就更安全的釋放對象哥攘,防止野指針調(diào)用
線程與進程的區(qū)別和聯(lián)系
一般的應用程序是單個進程剖煌,也有多進程,進程是個靜態(tài)的容器逝淹,里面容乃了很多歌線程耕姊,線程是一系列方法的線性執(zhí)行路徑
什么是TCP鏈接的三次握手
1.客戶端發(fā)送syn包到服務器,并進入SYN_SEND狀態(tài)栅葡,等待服務器確認
2.服務器收到syn包茉兰,必須確認客戶的SYN,同事自己也發(fā)送一個SYN包妥畏,客戶端收到服務器的SYN+ACK包邦邦,此時服務器進入SYN_RECV狀態(tài)
3.客戶端收到服務器的SYN+ACK包,向服務器發(fā)送確認包ACK醉蚁,此包發(fā)送完畢燃辖,客戶端和服務器進入ESTABLISHED狀態(tài),完成三次握手