iOS面試題
來源:程序員人生 發(fā)布時間:2015-05-25 09:20:59 閱讀次數(shù):3065次
- NSArray 和 NSMutableArray 的區(qū)分(線程方向)?
NSArray是線程安全的, NSMutableArray是線程不安全的, 多線程中使用 需要 手動加鎖 NSLock 或使用 @synchronized 修飾.
- Autorelease pool 實(shí)現(xiàn)原理?
在ARC中使用 @@autoreleasepool修飾需要手動添加到釋放池的代碼.大概意思是autorelease pool 內(nèi)部為1個雙向鏈表, 每一個鏈表元素為1個頁,每一個頁是1個棧,詳細(xì)的實(shí)現(xiàn)機(jī)制在這里,雖然不是很懂,感覺博主寫的很好
- iOS沙盒機(jī)制
默許情況下,每一個沙盒含有3個文件夾:Documents, Library 和 tmp。由于利用的沙盒機(jī)制,利用只能在幾個目錄下讀寫文件
Documents:蘋果建議將程序中建立的或在程序中閱讀到的文件數(shù)據(jù)保存在該目錄下,iTunes備份和恢復(fù)的時候會包括此目錄
Library:存儲程序的默許設(shè)置或其它狀態(tài)信息;
Library/Caches:寄存緩存文件,iTunes不會備份此目錄,此目錄下文件不會在利用退出刪除
tmp:提供1個即時創(chuàng)建臨時文件的地方。
iTunes在與iPhone同步時,備份所有的Documents和Library文件。
iPhone在重啟時,會拋棄所有的tmp文件。
- 深拷貝和淺拷貝的區(qū)分? 官方指南
首先, 被拷貝對象必須實(shí)現(xiàn)了NSCopying協(xié)議
淺拷貝: 被拷貝在內(nèi)存中只有1份, 只是增加了1個指針指向這個對象, 淺拷貝致使該對象援用計數(shù)加1.
深拷貝為被拷貝對象在內(nèi)存中復(fù)制1份被拷貝著所持有,原來的對象援用計數(shù)不變,拷貝出來的對象援用計數(shù)加1.
拷貝方法為 NSCopying協(xié)議方法: + (id)copyWithZone:(struct _NSZone *)zone
和 + (id)mutableCopyWithZone:(struct _NSZone *)zone
具體返回的是深拷貝還是淺拷貝, 需要看代理方法是如何實(shí)現(xiàn)的, 不過copy方法返回的始終為不可變對象, mutableCopy方法返回的是可變對象. 另外 歸檔和反歸檔是真實(shí)的深拷貝.
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
------分隔線----------------------------
------分隔線----------------------------