整理收集下面試基礎(chǔ),日常學(xué)習(xí)回憶下,也有助于基礎(chǔ)鞏固敛摘。(部分資料回答來源于網(wǎng)絡(luò)搜索)讨彼,如果有錯(cuò)誤部分鲤嫡,歡迎指出改正或探討送挑。
2017.2.27
javascript基本數(shù)據(jù)類型:
字符串(String)、數(shù)字(Number)暖眼、布爾(Boolean)惕耕、數(shù)組(Array)、對(duì)象(Object)诫肠、空(Null)司澎、未定義(Undefined)
2017/2/9更新
lldb(gdb)常用的調(diào)試命令?
? po:打印對(duì)象栋豫,會(huì)調(diào)用對(duì)象description方法挤安。是print-object的簡寫
? expr:可以在調(diào)試時(shí)動(dòng)態(tài)執(zhí)行指定表達(dá)式,并將結(jié)果打印出來丧鸯,很有用的命令
? print:也是打印命令蛤铜,需要指定類型
? bt:打印調(diào)用堆棧,是thread backtrace的簡寫丛肢,加all可打印所有thread的堆棧
? br l:是breakpoint list的簡寫
2017/1/22更新
如何讓計(jì)時(shí)器調(diào)用一個(gè)類方法
?計(jì)時(shí)器只能調(diào)用實(shí)例方法围肥,但是可以在這個(gè)實(shí)例方法里面調(diào)用靜態(tài)方法。
?使用計(jì)時(shí)器需要注意蜂怎,計(jì)時(shí)器一定要加入RunLoop中穆刻,并且選好model才能運(yùn)行。scheduledTimerWithTimeInterval方法創(chuàng)建一個(gè)計(jì)時(shí)器并加入到RunLoop中所以可以直接使用杠步。
?如果計(jì)時(shí)器的repeats選擇YES說明這個(gè)計(jì)時(shí)器會(huì)重復(fù)執(zhí)行氢伟,一定要在合適的時(shí)機(jī)調(diào)用計(jì)時(shí)器的invalid。不能在dealloc中調(diào)用幽歼, 因?yàn)橐坏┰O(shè)置為repeats為yes腐芍,計(jì)時(shí)器會(huì)強(qiáng)持有self,導(dǎo)致dealloc永遠(yuǎn)不會(huì)被調(diào)用试躏,這個(gè)類就永遠(yuǎn)無法被釋放。比如可以在viewDidDisappear中調(diào)用设褐,這 樣當(dāng)類需要被回收的時(shí)候就可以正常進(jìn)入dealloc中了颠蕴。
[NSTimer scheduledTimerWithTimeInterval:1 target:selfselector:@selector(timerMethod) userInfo:nilrepeats:YES];
-(void)timerMethod
{
調(diào)用類方法
[[self class] staticMethod];
}
-(void)invalid
{
[timer invalid];
timer =nil;
}
id和NSObject*的區(qū)別
?id是一個(gè)objc_object結(jié)構(gòu)體指針,定義是typedef structobjc_object *id
?id可以理解為指向?qū)ο蟮闹羔樦觥K衞c的對(duì)象id都可以指向犀被,編譯器不會(huì)做類型檢查,id調(diào)用任何存在的方法都不會(huì)在編譯階段報(bào)錯(cuò)外冀,當(dāng)然如果這個(gè)id指向的對(duì)象沒有這個(gè)方法寡键,還是會(huì)崩潰的。
? NSObject *指向的必須是NSObject的子類雪隧,調(diào)用的也只能是NSObjec里面的方法否則就要做強(qiáng)制類型轉(zhuǎn)換西轩。
?不是所有的OC對(duì)象都是NSObject的子類员舵,還有一些繼承自NSProxy。NSObject *可指向的類型是id的子集
category和extension的區(qū)別
? category:分類有名字藕畔,類擴(kuò)展沒i有分類名字马僻,是一種特殊的分類
? extension:分類只能擴(kuò)展方法(屬性僅僅是聲明,并沒真正實(shí)現(xiàn))注服,類擴(kuò)展可以擴(kuò)展屬性韭邓、成員變量和方法
define和const常量有什么區(qū)別?
? define在預(yù)處理階段進(jìn)行替換,const常量在編譯階段使用
?宏不做類型檢查溶弟,僅僅進(jìn)行替換女淑,const常量有數(shù)據(jù)類型,會(huì)執(zhí)行類型檢查
? define不能調(diào)試辜御,const常量可以調(diào)試
? define定義的常量在替換后運(yùn)行過程中會(huì)不斷地占用內(nèi)存鸭你,而const定義的常量存儲(chǔ)在數(shù)據(jù)段只有一份copy,效率更高
? define可以定義一些簡單的函數(shù)我抠,const不可以
block和weak修飾符的區(qū)別苇本?
?__block不管是ARC還是MRC模式下都可以使用,可以修飾對(duì)象菜拓,也可以修飾基本數(shù)據(jù)類型
?__weak只能在ARC模式下使用瓣窄,只能修飾對(duì)象(NSString),不能修飾基本數(shù)據(jù)類型
? block修飾的對(duì)象可以在block中被重新賦值纳鼎,weak修飾的對(duì)象不可以
static關(guān)鍵字的作用
?函數(shù)(方法)體內(nèi)static變量的作用范圍為該函數(shù)體俺夕,該變量的內(nèi)存只被分配一次,因此其值在下次調(diào)用時(shí)仍維持上次的值贱鄙;
?在模塊內(nèi)的static全局變量可以被模塊內(nèi)所用函數(shù)訪問劝贸,但不能被模塊外其它函數(shù)訪問;
?在模塊內(nèi)的static函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用逗宁,這個(gè)函數(shù)的使用范圍被限制在聲明 它的模塊內(nèi)映九;
?在類中的static成員變量屬于整個(gè)類所擁有,對(duì)類的所有對(duì)象只有一份拷貝瞎颗;
?在類中的static成員函數(shù)屬于整個(gè)類所擁有件甥,這個(gè)函數(shù)不接收this指針,因而只能訪問類的static成員變量