1.單例設(shè)計(jì)模式的實(shí)現(xiàn),為什么使用單例模式?? ? ? ? ? ? ? ? ? ? ? ? ? ? static ?MusicManager *manager=nil; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
@implementation MusicManager
//獲取單例的方法
+(MusicManager*)defaultManager
{
? ? ?//只調(diào)用一次,保證線程安全
? ? ?static ?dispa tch_once_t ?onceToken
? ? ?dispatch_once(&onceToken,^{
? ? ? ? ? ? ? if(manager == nil){
? ? ? ? ? ? ? manager = [[MusicManager alloc]init];
? ? ? ? ? ? ? }
? ? ?});
? ? ? return ? manager;
}
為什么使用單例設(shè)計(jì)??
? ? 1.單例設(shè)計(jì)是用來(lái)限制一個(gè)類(lèi)只能創(chuàng)建一個(gè)對(duì)象,那么此對(duì)象中的屬性可以存儲(chǔ)全局共享的數(shù)據(jù),所有的類(lèi)都可以訪問(wèn),設(shè)置此單例對(duì)象中的屬性數(shù)據(jù)。2.如果一個(gè)類(lèi)創(chuàng)建的時(shí)候非常消耗性能,那么此類(lèi)可以設(shè)置為單例節(jié)約性能,只要能夠滿足需求。
2.CALayer層和UIView的區(qū)別是什么???
? ? ? ?兩者最大的區(qū)別是,圖層不會(huì)直接渲染到屏幕上,UIView是iOS系統(tǒng)中界面元素的基礎(chǔ),所有的界面元素都是繼承于它。它本身是有CoreAnimation來(lái)實(shí)現(xiàn)的,它真正的繪圖部分,是由一個(gè)CALayer類(lèi)來(lái)管理的。而UIView就像是CALayer的管理器,一個(gè)UIView上可以有多個(gè)CALayer,每個(gè)都可以顯示一種東西,從而增強(qiáng)UIView的展現(xiàn)能力。
3.設(shè)計(jì)模式:
? ? ?MVC,單例,工廠,KVO,策略
? ? ?MVC是一種架構(gòu)設(shè)計(jì),M表示數(shù)據(jù)模型,V表示視圖,C表示控制器
? ? ?1>數(shù)據(jù)模型:負(fù)責(zé)存儲(chǔ),定義,操作數(shù)據(jù)
? ? ?2>視圖:用來(lái)展示數(shù)據(jù)給用戶,和用戶進(jìn)行操作交互
? ? ?3>控制器是M和V的協(xié)調(diào)者,控制器獲取數(shù)據(jù),將數(shù)據(jù)交給視圖去展示?
4.數(shù)據(jù)持久化存儲(chǔ)的方式:
? ? ? plist,歸檔,NSUserdefaults,數(shù)據(jù)庫(kù)(FMDB,CoreData)
5.UITableView的復(fù)用機(jī)制:
6.系統(tǒng)創(chuàng)建多線程的方式:
? ? GCD,NSOperation,NSThread
7.OC中繼承和類(lèi)別的區(qū)別:
? ? 繼承是繼承父類(lèi)的方法,子類(lèi)擁有父類(lèi)的屬性或者方法,類(lèi)別是為某個(gè)類(lèi)添加一些新的方法,優(yōu)先使用自己的方法。
8.KVO和KVC的區(qū)別:
9.響應(yīng)者鏈:
? ? ?響應(yīng)者鏈表示一系列的響應(yīng)者對(duì)象,事件被交由第一響應(yīng)者對(duì)象處理,如果第一響應(yīng)者不處理,時(shí)間被沿著響應(yīng)者蓮向上傳遞,交給下一個(gè)響應(yīng)者,一般來(lái)說(shuō),第一響應(yīng)者是個(gè)視圖對(duì)象或者其子類(lèi)對(duì)象,當(dāng)其被觸摸后時(shí)間唄交由它處理,如果它不處理,事件就會(huì)被傳遞給它的視圖控制器對(duì)象,若存在,就是它的父視圖對(duì)象,若還存在,直到頂層視圖。接下來(lái)會(huì)沿著頂層視圖到窗口,再到程序,如果整個(gè)過(guò)程都沒(méi)有響應(yīng)這個(gè)事件,改事件就會(huì)被丟棄。