資源描述:
《ios面試題歸總》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Object-C有多繼承嗎?沒有的話用什么代替?cocoa中所有的類都是NSObject的子類,多繼承在這里是用protocol委托代理來實現(xiàn)的你不用去考慮繁瑣的多繼承,虛基類的概念.ood的多態(tài)特性在obj-c中通過委托來實現(xiàn).Object-C有私有方法嗎?私有變量呢?objective-c–類里面的方法只有兩種,靜態(tài)方法和實例方法.這似乎就不是完整的面向?qū)ο罅?按照OO的原則就是一個對象只暴露有用的東西.如果沒有了私有方法的話,對于一些小范圍的代碼重用就不那么順手了.在類里面聲名一個私有方法@interfaceControlle
2、r:NSObject{NSString*something;}+(void)thisIsAStaticMethod;–(void)thisIsAnInstanceMethod;@end@interfaceController(private)-(void)thisIsAPrivateMethod;@end@private可以用來修飾私有變量在Objective‐C中,所有實例變量默認都是私有的,所有實例方法默認都是公有的關(guān)鍵字const什么含義const意味著”只讀”,下面的聲明都是什么意思?constinta;intconsta;
3、constint*a;int*consta;intconst*aconst;前兩個的作用是一樣,a是一個常整型數(shù)。第三個意味著a是一個指向常整型數(shù)的指針(也就是,整型數(shù)是不可修改的,但指針可以)。第四個意思a是一個指向整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是可以修改的,但指針是不可修改的)。最后一個意味著a是一個指向常整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是不可修改的,同時指針也是不可修改的)。結(jié)論:?;關(guān)鍵字const的作用是為給讀你代碼的人傳達非常有用的信息,實際上,聲明一個參數(shù)為常量是為了告訴了用戶這個參數(shù)的應(yīng)用目的。
4、如果你曾花很多時間清理其它人留下的垃圾,你就會很快學會感謝這點多余的信息。(當然,懂得用const的程序員很少會留下的垃圾讓別人來清理的。)?;通過給優(yōu)化器一些附加的信息,使用關(guān)鍵字const也許能產(chǎn)生更緊湊的代碼。?;合理地使用關(guān)鍵字const可以使編譯器很自然地保護那些不希望被改變的參數(shù),防止其被無意的代碼修改。簡而言之,這樣可以減少bug的出現(xiàn)。欲阻止一個變量被改變,可以使用const關(guān)鍵字。在定義該const變量時,通常需要對它進行初始化,因為以后就沒有機會再去改變它了;(2)對指針來說,可以指定指針本身為const,也可以
5、指定指針所指的數(shù)據(jù)為const,或二者同時指定為const;(3)在一個函數(shù)聲明中,const可以修飾形參,表明它是一個輸入?yún)?shù),在函數(shù)內(nèi)部不能改變其值;(4)對于類的成員函數(shù),若指定其為const類型,則表明其是一個常函數(shù),不能修改類的成員變量;(5)對于類的成員函數(shù),有時候必須指定其返回值為const類型,以使得其返回值不為“左值”。關(guān)鍵字volatile有什么含義?并給出三個不同例子?一個定義為volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設(shè)這個變量的值了。精確地說就是,優(yōu)化器在用到這個變量時必
6、須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器里的備份。下面是volatile變量的幾個例子:?并行設(shè)備的硬件寄存器(如:狀態(tài)寄存器)?一個中斷服務(wù)子程序中會訪問到的非自動變量(Non-automaticvariables)?多線程應(yīng)用中被幾個任務(wù)共享的變量?一個參數(shù)既可以是const還可以是volatile嗎?解釋為什么。?一個指針可以是volatile嗎?解釋為什么。下面是答案:?是的。一個例子是只讀的狀態(tài)寄存器。它是volatile因為它可能被意想不到地改變。它是const因為程序不應(yīng)該試圖去修改它。?是的。盡管這
7、并不很常見。一個例子是當一個中服務(wù)子程序修該一個指向一個buffer的指針時。static作用?函數(shù)體內(nèi)static變量的作用范圍為該函數(shù)體,不同于auto變量,該變量的內(nèi)存只被分配一次,因此其值在下次調(diào)用時仍維持上次的值;(2)在模塊內(nèi)的static全局變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問;(3)在模塊內(nèi)的static函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用,這個函數(shù)的使用范圍被限制在聲明它的模塊內(nèi);(4)在類中的static成員變量屬于整個類所擁有,對類的所有對象只有一份拷貝;(5)在類中的static成員函數(shù)屬于
8、整個類所擁有,這個函數(shù)不接收this指針,因而只能訪問類的static成員變量。#import和#include的區(qū)別,@class代表什么?@class一般用于頭文件中需要聲明該類的某個實例變量的時候用到,在m文件中還是需要使用#i