1,簡述你對UIView尾组、UIWindow和CALayer的理解
UIView繼承于UIResponder, UIResponder繼承于NSObject,UIView可以響應(yīng)用戶事件柬帕。CALayer繼承于NSObject垄分,所以CALayer不能響應(yīng)事件饲宛。UIView構(gòu)建界面,UIView側(cè)重于對內(nèi)容的管理就轧,CALayer側(cè)重于對內(nèi)容的繪制险掀。UIView是用來顯示內(nèi)容的沪袭,可以處理用戶事件;CALayer是用來繪制內(nèi)容的樟氢,對內(nèi)容進(jìn)行動畫處理冈绊,依賴與UIView來進(jìn)行顯示,不能處理用戶事件埠啃。
2死宣,寫一個(gè)完整的代理,包括聲明碴开,實(shí)現(xiàn)
略
3毅该,分析json、xml的區(qū)別潦牛?json眶掌、xml解析方式的底層是如何處理的?
XML是標(biāo)準(zhǔn)通用標(biāo)記語言 (SGML)的子集巴碗,非常適合 Web 傳輸朴爬。XML 提供統(tǒng)一的方法來描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。
JSON(JavaScriptObject Notation)一種輕量級的數(shù)據(jù)交換格式橡淆,具有良好的可讀
和便于快速編寫的特性召噩。可在不同平臺之間進(jìn)行數(shù)據(jù)交換逸爵。JSON采用兼容性很
高的具滴、完全獨(dú)立 于語言文本格式,同時(shí)也具備類似于C語言的習(xí)慣(包括C,
C++, C#, Java, JavaScript, Perl,Python等)體系的行為痊银。這些特性使JSON成為理想
的數(shù)據(jù)交換語言抵蚊。
4,ViewController 的 didReceiveMemoryWarning 是在什么時(shí)候被調(diào)用的溯革?默認(rèn)的操作是什么?
didReceiveMemoryWarning在出現(xiàn)內(nèi)存警告的時(shí)候執(zhí)行該方法,在該方法里面釋放掉暫時(shí)沒使用的可重用的對象谷醉。這個(gè)方法不能手動調(diào)用.
5致稀,面向?qū)ο蟮娜筇卣鳎⒆骱唵蔚慕榻B
封裝俱尼、繼承抖单、多態(tài)。封裝:是把客觀事物封裝成抽象的類,隱藏內(nèi)部的實(shí)現(xiàn)矛绘,對外部提供接口耍休。繼承:可以使用現(xiàn)有類的所有功能,并且在無需重新編寫原來的類的情況下對這些功能進(jìn)行擴(kuò)展货矮。多態(tài):不同的對象以自己的方式響應(yīng)相同的的消息的能力叫做多態(tài)羊精,或者說父類指針指向子類對象<如UITableView的,cellForRow方法囚玫,返回值類型是UITbaleViewCell喧锦,但是你返回的cell可以是你自定義的cell,在比如多個(gè)類里面都有同一個(gè)方法>
6,重寫一個(gè)NSStrng類型的抓督,retain方式聲明name屬性的setter和getter方法
略
7燃少,簡述NotificationCenter、KVC铃在、KVO阵具、Delegate?并說明它們之間的區(qū)別定铜?
Notification:觀察者模式阳液,觀察者模式一般用于一對多, 發(fā)出消息者并不在意有沒有\(zhòng)有多少個(gè)接收者, 只管發(fā)出消息. 觀察者模式的效率低于代理模式. KVC鍵值編碼,可以直接通過字符串的名字(key)或者路徑來間接訪問屬性的機(jī)制宿稀,而不是通過調(diào)用getter和setter方法訪問趁舀。
KVO:觀測指定對象的屬性,當(dāng)指定對象屬性的setter方法被調(diào)用之后會通知相應(yīng)的觀察者祝沸。
delegate:一對一矮烹,delegate遵循某個(gè)協(xié)議并實(shí)現(xiàn)協(xié)議聲明的方法。
8罩锐,What is lazy loading?
懶加載奉狈,又稱為延遲加載。通常用法涩惑,你有一個(gè)UITextField類 型的property仁期,簡單定義為userNameTextField,但是你不在初始化方法里為其alloc/init竭恬,它就只是一個(gè)指針跛蛋,不會占用內(nèi) 存。在訪問器里判斷此property的指針是否為空痊硕,若為空赊级,就alloc/init,這時(shí)才真正生成這個(gè)對象除非這個(gè)對象被使用岔绸,否則它永遠(yuǎn)不會真正 生成理逊,也就不會占用內(nèi)存橡伞。
9,什么是Protocol晋被?什么是代理兑徘?寫一個(gè)委托的interface?委托的property聲明用什么屬性羡洛?為什么挂脑?
協(xié)議提供了一組方法,但是并不負(fù)責(zé)實(shí)現(xiàn)翘县,如果一個(gè)類遵循了某個(gè)協(xié)議最域,并且實(shí)現(xiàn)了協(xié)議里面的方法,那么我們稱這個(gè)類就是遵循了某個(gè)協(xié)議的代理锈麸。屬性的聲明使用assign镀脂,防止出現(xiàn)循環(huán)引用的問題。
10忘伞,分別描述類別(categories)和延展(extensions)是什么薄翅?以及兩者的區(qū)別?繼承和類別在實(shí)現(xiàn)中有何區(qū)別氓奈?為什么Category只能為對象添加方法翘魄,卻不能添加成員變量?
category類目:在不知道源碼的情況下為一個(gè)類擴(kuò)展方法舀奶,extension:為一個(gè)類聲明私有方法和變量暑竟。繼承是創(chuàng)建了一個(gè)新的類,而類別只是對類的一個(gè)擴(kuò)展育勺,還是之前的類但荤。
類目的作用就是為已知的類添加方法。