iOS面試題(2)

1.#import和#include的區(qū)別 @class沟蔑?@class一般用于頭文件中需要聲明該類的某個(gè)實(shí)例變量的時(shí)候用到湿诊,在m文 件中還是需要使用#import而#import比起#include的好處就是不會(huì)引起交叉編譯2. readwrite狱杰,readonly,assign厅须,retain仿畸,copy,nonatomic 屬性的作用@property是 一個(gè)屬性訪問聲明朗和,擴(kuò)號(hào)內(nèi)支持以下幾個(gè)屬性:1错沽,getter=getName,setter=setName眶拉,設(shè)置setter與 getter的方法名2千埃,readwrite,readonly,設(shè)置可供訪問級(jí)別2忆植,assign放可,setter方法直接賦值,不進(jìn)行任何retain操作朝刊,為了解決原類型與環(huán)循引用問題3耀里,retain,setter方法對(duì)參數(shù)進(jìn)行release舊值再retain新值拾氓,所有 實(shí)現(xiàn)都是這個(gè)順序(CC上有相關(guān)資料)4冯挎,copy,setter方法進(jìn)行Copy操作咙鞍,與retain處理流程一樣房官,先舊值release,再 Copy出新的對(duì)象续滋,retainCount為1翰守。這是為了減少對(duì)上下文的依賴而引入的機(jī)制。5吃粒,nonatomic潦俺,非原子性訪問,不加同步, 多線程并發(fā)訪問會(huì)提高性能事示。注意早像,如果不加此屬性,則默認(rèn)是兩個(gè)訪問方法都為原子型事務(wù)訪問肖爵。鎖被加到所屬對(duì)象實(shí)例級(jí)(我是這么理解的…)卢鹦。3.在一個(gè)對(duì)象的方法里面:self.name= “object”;和 name =”object” 有什么不同嗎?答:self.name =”object”:會(huì)調(diào)用對(duì)象的setName()方法劝堪;name = “object”:會(huì)直接把object賦值給當(dāng)前對(duì)象的name屬性冀自。4.請(qǐng)簡(jiǎn)述self.name= nil的機(jī)制,以及與[namerelease]的區(qū)別秒啦?self.name =nil;? //使用nil參數(shù)調(diào)用setName:方法[name release]生成的訪問器將自動(dòng)釋放以前的name對(duì)象 5.請(qǐng)簡(jiǎn)要說明viewDidLoad和viewDidUnload何時(shí)調(diào)用答:viewDidLoad在view從nib文件初始化時(shí)調(diào)用熬粗,loadView在controller的view為nil時(shí)調(diào)用。此方法在編程實(shí)現(xiàn)view時(shí)調(diào)用余境,view控制器默認(rèn)會(huì)注冊(cè)memory warning notification驻呐,當(dāng)view controller的任何view沒有用的時(shí)候,viewDidUnload會(huì)被調(diào)用芳来,在這里實(shí)現(xiàn)將retain的view release含末,如果是retain的IBOutlet view 屬性則不要在這里release,IBOutlet會(huì)負(fù)責(zé)release 即舌。6.實(shí)例化一個(gè)UITableView對(duì)象佣盒,要求寫出關(guān)鍵語句?答:UITableView *my = [[UITableView alloc]initWithFrame:<(CGRect)frame> style:<(UITableViewStyle)style>];my.delegate = self;my.dataSource = self;首先需要分配空間設(shè)置表格類型然后需要設(shè)置兩個(gè)必須的委托對(duì)象顽聂。7.使用sql語句查詢出省名以湖開頭肥惭,郵編為436001所在的市區(qū)?(5分)(表名及字段名自定義)select*fromcitys where postcode=436001 and province=’湖%’芜飘;8.打印結(jié)果main() {? ? int a[5]={1,2,3,4,5};? ? int *ptr=(int *)(&a+1);? ? printf(“%d,%d”,*(a+1),*(ptr-1));}答:2,5*(a+1)就是a[1]务豺,*(ptr-1)就是a[4],執(zhí)行結(jié)果是2,5&a+1不是首地址+1嗦明,系統(tǒng)會(huì)認(rèn)為加一個(gè)a數(shù)組的偏 移笼沥,是偏移了一個(gè)數(shù)組的大小(本例是5個(gè)int)int *ptr=(int *)(&a+1);則ptr實(shí)際 是&(a[5]),也就是a+5原因如下:&a是數(shù)組指針娶牌,其類型為 int (*)[5];而 指針加1要根據(jù)指針類型加上一定的值奔浅,不同類型的指針+1之后增加的大小不同。a是長(zhǎng)度為5的int數(shù)組指針诗良,所以要加 5*sizeof(int)所以ptr實(shí)際是a[5]但是prt與(&a+1)類型是不一樣的(這點(diǎn)很重要)所以prt-1只會(huì)減去sizeof(int*)a,&a的地址是一樣的汹桦,但意思不一樣a是數(shù)組首地址,也就是a[0]的地址鉴裹,&a是對(duì)象(數(shù)組)首地址舞骆,a+1是數(shù)組下一元素的地址钥弯,即a[1],&a+1是下一個(gè)對(duì)象的地址,即a[5]. void Func ( char str[100] ) {? sizeof(str ) = ? } void*p = malloc( 100 ); sizeof( p ) = ?這題 很常見了,Func ( char str[100] )函數(shù)中數(shù)組名作為函數(shù)形參時(shí)督禽,在函數(shù)體內(nèi)脆霎,數(shù)組名失去了本身的內(nèi)涵,僅僅只是一個(gè)指針狈惫;在失去其內(nèi)涵的同時(shí)睛蛛,它還失去了其常量特性,可以作自增胧谈、自減等操作忆肾,可以被修改。Windows NT 32位平臺(tái)下菱肖,指針的長(zhǎng)度(占用內(nèi)存的大锌透浴)為4字節(jié),故sizeof( str ) 蔑滓、sizeof( p ) 都為4郊酒。 9.用預(yù)處理指令#define聲明一個(gè)常數(shù),用以表明1年中有多少秒(忽略閏年問題)答:#defineSECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在這想看到幾件事情:#define 語法的基本知識(shí)(例如:不能以分號(hào)結(jié)束键袱,括號(hào)的使用,等等)懂得預(yù)處理器將為你計(jì)算常數(shù)表達(dá)式的值摹闽,因此蹄咖,直接寫出你是如何計(jì)算一年中有多少秒而不是計(jì)算出實(shí)際的值,是更清晰而沒有代價(jià)的付鹿。意識(shí)到這個(gè)表達(dá)式將使一個(gè)16位機(jī)的整型數(shù)溢出-因此要用到長(zhǎng)整型符號(hào)L,告訴編譯器這個(gè)常數(shù)是的長(zhǎng)整型數(shù)澜汤。如果你在你的表達(dá)式中用到UL(表示無符號(hào)長(zhǎng)整型),那么你有了一個(gè)好的起點(diǎn)舵匾。記住俊抵,第一印象很重要。 10.寫一” 標(biāo)準(zhǔn)”宏MIN 坐梯,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)答:#define MIN(A,B) ((A) <= (B) ? (A) : (B))這個(gè)測(cè)試是為下面的目的而設(shè)的:標(biāo)識(shí)#define在宏中應(yīng)用的基本知識(shí)徽诲。這是很重要的,因?yàn)橹钡角度?inline)操作符變?yōu)闃?biāo)準(zhǔn)C的一部分吵血,宏是方便產(chǎn)生嵌入代碼的唯一方法谎替,對(duì)于嵌入式系統(tǒng)來說,為了能達(dá)到要求的性能蹋辅,嵌入代碼經(jīng)常是必須的方法钱贯。三重條件操作符的知識(shí)。這個(gè)操作符存在C語言中的原因是它使得編譯器能產(chǎn)生比 if-then-else 更優(yōu)化的代碼侦另,了解這個(gè)用法是很重要的秩命。 懂得在宏中小心地把參數(shù)用括號(hào)括起來? 我也用這個(gè)問題開始討論宏的副作用尉共,例如:當(dāng)你寫下面的代碼時(shí)會(huì)發(fā)生什么事?? least = MIN(*p++, b);結(jié)果是:((*p++) <= (b) ? (*p++) :(*p++))這個(gè)表達(dá)式會(huì)產(chǎn)生副作用弃锐,指針p會(huì)作三次++自增操作爸邢。 11.數(shù)組和指針的區(qū)別(1)數(shù)組可以申請(qǐng)?jiān)跅^(qū)和數(shù)據(jù)區(qū);指針可以指向任意類型的內(nèi)存塊(2)sizeof作用于數(shù)組時(shí)拿愧,得到的是數(shù)組所占的內(nèi)存大懈芎印;作用于指針時(shí)浇辜,得到的都是4個(gè)字節(jié)的大腥小(3)數(shù)組名表示數(shù)組首地址倒慧,值不可以改變扁达,如不可以將++作用于數(shù)組名上;普通指針的值可以改變害淤,如可將++作用于指針上(4)用字符串初始化字符數(shù)組是將字符串的內(nèi)容拷貝到字符數(shù)組中熊镣;用字符串初始化字符指針是將字符串的首地址賦給指針卑雁,也就是指針指向了該數(shù)組 12.static的作用(1)函數(shù)體內(nèi)static 變量的作用范圍為該函數(shù)體,不同于 auto 變量绪囱,該變量的內(nèi)存只被分配一次测蹲,因此其值在下次調(diào)用時(shí)仍維持上次的值;(2)在模塊內(nèi)的static 全局變量可以被模塊內(nèi)所用函數(shù)訪問鬼吵,但不能被模塊外其它函數(shù)訪問扣甲;(3)在模塊內(nèi)的static 函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用,這個(gè)函數(shù)的使用范圍被限制在聲明它的模塊內(nèi)齿椅;(4)在類中的static 成員變量屬于整個(gè)類所擁有琉挖,對(duì)類的所有對(duì)象只有一份拷貝;(5)在類中的static 成員函數(shù)屬于整個(gè)類所擁有涣脚,這個(gè)函數(shù)不接收 this 指針示辈,因而只能訪問類的static 成員變量。 13.簡(jiǎn)述內(nèi)存分區(qū)情況(1)代碼區(qū):存放函數(shù)二進(jìn)制代碼(2)數(shù)據(jù)區(qū):系統(tǒng)運(yùn)行時(shí)申請(qǐng)內(nèi)存并初始化遣蚀,系統(tǒng)退出時(shí)由系統(tǒng)釋放矾麻。存放全局變量、靜態(tài)變量妙同、常量(3)堆區(qū):通過malloc等函數(shù)或new等操作符動(dòng)態(tài)申請(qǐng)得到射富,需程序員手動(dòng)申請(qǐng)和釋放(4)棧區(qū):函數(shù)模塊內(nèi)申請(qǐng),函數(shù)結(jié)束時(shí)由系統(tǒng)自動(dòng)釋放粥帚。存放局部變量胰耗、函數(shù)參數(shù) 14.#include和#include”filename”有什么區(qū)別答:#include直接在庫文件目錄中搜索所包含的文件;#include”filename”在當(dāng)前目錄下搜索所包含的文件柴灯,如果沒有的話再到庫文件目錄搜索卖漫。15.const char *p;? charconst*p;? char*const p;? const char* const p;四個(gè)修飾指針有什么區(qū)別答: (1)定義了一個(gè)指向不可變的字符串的字符指針(2)和(1)一樣(3)定義了一個(gè)指向字符串的指針羊始,該指針值不可改變匀油,即不可改變指向(4)定義了一個(gè)指向不可變的字符串的字符指針弛车,且該指針也不可改變指向16.MVC的理解忽舟?答:MVC模式考慮三種對(duì)象:模型對(duì)象泣特、視圖對(duì)象和控制器對(duì)象膏孟。 模型對(duì)象負(fù)責(zé)應(yīng)用程序的數(shù)據(jù)和定義操作數(shù)據(jù)的邏輯; 視圖對(duì)象知道如何顯示應(yīng)用程序的模型數(shù)據(jù); 控制器對(duì)象是M與V之間的協(xié)調(diào)者。 17.在Obj-c中有沒有私有方法少欺?私有變量狈茉?一般采用什么方法實(shí)現(xiàn)仁讨?objective-c – 類里面的方法只有兩種, 靜態(tài)方法和實(shí)例方法. 這似乎就不是完整的面向?qū)ο罅?按照OO的原則就是一個(gè)對(duì)象只暴露有用的東西. 如果沒有了私有方法的話, 對(duì)于一些小范圍的代碼重用就不那么順手了. 在類里面聲名一個(gè)私有方法@interfaceController : NSObject { NSString *something; }+(void)thisIsAStaticMethod;-(void)thisIsAnInstanceMethod;@end@interfaceController (private)-(void)thisIsAPrivateMethod;@end@private可以用來修飾私有變量在Objective‐C中,所有實(shí)例變量默認(rèn)都是私有的曙咽,所有實(shí)例方法默認(rèn)都是公有的18.OC中加號(hào)方法與減號(hào)的區(qū)別?加號(hào)方法是類方法渔隶,屬于靜態(tài)方法減號(hào)方法是實(shí)例方法必須由類的實(shí)例來調(diào)用 19.free與release的區(qū)別 20.在終端環(huán)境下镀赌,分別說明4,2,1,0對(duì)應(yīng)的權(quán)限是什么21.ARC機(jī)制ARC就是automatic reference counting 商佛,簡(jiǎn)單說就是就是代碼中自動(dòng)加入了retain/release痊剖,原先需要手動(dòng)添加的用來處理內(nèi)存管理的引用計(jì)數(shù)的代碼可以自動(dòng)地由編譯器完成了。使用ARC的好處使用ARC有什么好處呢杨箭?看到上面的例子,大家就知道了着茸,以后寫Objective-C的代碼變得簡(jiǎn)單多了掰邢,因?yàn)槲覀儾恍枰獡?dān)心煩人的內(nèi)存管理,擔(dān)心內(nèi)存泄露了代碼的總量變少了梳猪,看上去清爽了不少逃呼,也節(jié)省了勞動(dòng)力代碼高速化平匈,由于使用編譯器管理引用計(jì)數(shù)饲嗽,減少了低效代碼的可能性不好的地方記住一堆新的ARC規(guī)則—關(guān)鍵字及特性等需要一定的學(xué)習(xí)周期一些舊的代碼,第三方代碼使用的時(shí)候比較麻煩码党;修改代碼需要工數(shù),要么修改編譯開關(guān) 22.自動(dòng)釋放池是什么,如何工作當(dāng)您向一個(gè)對(duì)象發(fā)送一個(gè)autorelease 消息時(shí),Cocoa就會(huì)將該對(duì)象的一個(gè)引用放入到最新的自動(dòng)釋放池。它仍然是個(gè)正當(dāng)?shù)膶?duì)象,因此自動(dòng)釋放池定義的作用域內(nèi)的其它對(duì)象可以向它發(fā)送消息识椰。當(dāng)程序執(zhí)行到作用域結(jié)束的位置時(shí)航瞭,自動(dòng)釋放池就會(huì)被釋放,池中的所有對(duì)象也就被釋放坦辟。1. ojc-c 是 通過一種”referring counting”(引用計(jì)數(shù))的方式來管理內(nèi)存的, 對(duì)象在開始分配內(nèi)存(alloc)的時(shí)候引用計(jì)數(shù)為一,以后每當(dāng)碰到有copy,retain的時(shí)候引用計(jì)數(shù)都會(huì)加一, 每當(dāng)碰到release和autorelease的時(shí)候引用計(jì)數(shù)就會(huì)減一,如果此對(duì)象的計(jì)數(shù)變?yōu)榱?, 就會(huì)被系統(tǒng)銷毀.2. NSAutoreleasePool 就是用來做引用計(jì)數(shù)的管理工作的,這個(gè)東西一般不用你管的.3. autorelease和release沒什么區(qū)別,只是引用計(jì)數(shù)減一的時(shí)機(jī)不同而已,autorelease會(huì)在對(duì)象的使用真正結(jié)束的時(shí)候才做引用計(jì)數(shù)減一.23.ViewController 的 loadView, viewDidLoad,viewDidUnload 分別是在什么時(shí)候調(diào)用的刊侯?在自定義ViewController的時(shí)候這幾個(gè)函數(shù)里面應(yīng)該做什么工作?viewDidLoad在view 從nib文件初始化時(shí)調(diào)用锉走,loadView在controller的view為nil時(shí)調(diào)用滨彻。此方法在編程實(shí)現(xiàn)view時(shí)調(diào)用,view 控制器默認(rèn)會(huì)注冊(cè)memory warning notification,當(dāng)view controller的任何view 沒有用的時(shí)候,viewDidUnload會(huì)被調(diào)用挪蹭,在這里實(shí)現(xiàn)將retain 的view release,如果是retain的IBOutlet view 屬性則不要在這里release,IBOutlet會(huì)負(fù)責(zé)release 亭饵。24. 淺復(fù)制和深復(fù)制的區(qū)別?//淺拷貝和深拷貝答案:淺層復(fù)制(copy):只復(fù)制指向?qū)ο蟮闹羔樍豪鳎粡?fù)制引用對(duì)象本身辜羊。//通過對(duì)象的指針來訪問這個(gè)對(duì)象深層復(fù)制(mutableCopy):復(fù)制引用對(duì)象本身 意思就是有個(gè)A對(duì)象踏兜,復(fù)制一份后得到A_copy對(duì)象后,對(duì)于淺復(fù)制來說八秃,A和A_copy指向的是同一個(gè)內(nèi)存資源碱妆,復(fù)制的只不過是是一個(gè)指針,對(duì)象本身資源 還是只有一份昔驱,那如果我們對(duì)A_copy執(zhí)行了修改操作,那么發(fā)現(xiàn)A引用的對(duì)象同樣被修改疹尾,這其實(shí)違背了我們復(fù)制拷貝的一個(gè)思想。深復(fù)制就好理解了,內(nèi)存中存在了 兩份獨(dú)立對(duì)象本身骤肛。//當(dāng)修改A時(shí)纳本,A copy不變。25. frame和bounds有什么不同腋颠?答案:frame指的是:該view在父view坐標(biāo)系統(tǒng)中的位置和大小繁成。(參照點(diǎn)是父親的坐標(biāo)系統(tǒng))//frame:框架、結(jié)構(gòu)bounds指的是:該view在本身坐標(biāo)系統(tǒng)中 的位置和大小秕豫。(參照點(diǎn)是本身坐標(biāo)系統(tǒng))//bounds:界限 26. obj-c的優(yōu)缺點(diǎn)答案:objc優(yōu)點(diǎn):1) Cateogies2) Posing3) 動(dòng)態(tài)識(shí)別4) 指標(biāo)計(jì)算5)彈性訊息傳遞6) 不是一個(gè)過度復(fù)雜的 C 衍生語言7) Objective-C 與 C++ 可混合編程缺點(diǎn):1) 不支援命名空間2)? 不支持運(yùn)算符重載3) 不支持多重繼承4) 使用動(dòng)態(tài)運(yùn)行時(shí)類型朴艰,所有的方法都是函數(shù)調(diào)用,所以很多編譯時(shí)優(yōu)化方法都用不到混移。(如內(nèi)聯(lián)函數(shù)等)祠墅,性能低劣。27.? 用變量a給出下面的定義? a) 一個(gè)整型數(shù)(An integer)? b)一個(gè)指向整型數(shù)的指針( A pointer to aninteger)? c)一個(gè)指向指針的的指針歌径,它指向的指針是指向一個(gè)整型數(shù)( Apointer to a pointer to an intege)r? d)一個(gè)有10個(gè)整型數(shù)的數(shù)組( An array of 10 integers)? e) 一個(gè)有10個(gè)指針的數(shù)組毁嗦,該指針是指向一個(gè)整型數(shù)的。(An array of 10 pointers to integers)? f) 一個(gè)指向有10個(gè)整型數(shù)數(shù)組的指針( A pointer to an array of 10 integers)? g) 一個(gè)指向函數(shù)的指針回铛,該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)(Apointer to a function that takes an integer as an argument? andreturns an integer)? h)一個(gè)有10個(gè)指針的數(shù)組狗准,該指針指向一個(gè)函數(shù),該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)( An array of ten pointers to functions t hat takean integer argument and return an integer )? 答案是:a) int a; // Anintegerb) int *a; // A pointer to anintegerc) int **a; // A pointer to apointer to an integerd) int a[10]; // An array of10 integerse) int *a[10]; // An array of10 pointers to integersf) int (*a)[10]; // A pointerto an array of 10 integersg) int (*a)(int); // A pointerto a function a that? takes an integer argument and returns anintegerh) int (*a[10])(int); // Anarray of 10 pointers to functions? that take an integer argument andreturn an integer28. 寫出幾個(gè)死循環(huán)茵肃?29. 隊(duì)列和棧有什么區(qū)別:答:隊(duì)列和棧是兩種不同的數(shù)據(jù)容器腔长。從”數(shù)據(jù)結(jié)構(gòu)”的角度看,它們都是線性結(jié)構(gòu)验残,即數(shù)據(jù)元素之間的關(guān)系相同捞附。隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),它在兩端進(jìn)行操作您没,一端進(jìn)行入隊(duì)列操作鸟召,一端進(jìn)行出列隊(duì)操作。棧是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu)氨鹏,它只能在棧頂進(jìn)行操作欧募,入棧和出棧都在棧頂操作。30.HTTP協(xié)議中仆抵,POST和GET的區(qū)別是什么跟继?答案:1.GET 方法GET 方法提交數(shù)據(jù)不安全种冬,數(shù)據(jù)置于請(qǐng)求行,客戶端地址欄可見;GET 方法提交的數(shù)據(jù)大小有限GET 方法不可以設(shè)置書簽2.POST 方法POST 方法提交數(shù)據(jù)安全还栓,數(shù)據(jù)置于消息主體內(nèi)碌廓,客戶端不可見POST 方法提交的數(shù)據(jù)大小沒有限制POST 方法可以設(shè)置書簽31.? iOS的系統(tǒng)架構(gòu)分為( 核心操作系統(tǒng)層 theCore OS layer )、( 核心服務(wù)層theCore Services layer )剩盒、( 媒體層 theMedia layer )和( Cocoa 界面服務(wù)層 the Cocoa Touch layer )四個(gè)層次。32.? 控件主要響應(yīng)3種事件:( 基于觸摸的事件 )慨蛙、( 基于值的事件 )和( 基于編輯的事件 )辽聊。33.? xib文件的構(gòu)成分為哪3個(gè)圖標(biāo)?都具有什么功能期贫。(10分)答: File’s Owner 是所有 nib 文件中的每個(gè)圖標(biāo)跟匆,它表示從磁盤加載 nib 文件的對(duì)象;First Responder 就是用戶當(dāng)前正在與之交互的對(duì)象通砍;View 顯示用戶界面玛臂;完成用戶交互;是 UIView 類或其子類封孙。34.? 簡(jiǎn)述視圖控件器的生命周期(10分)迹冤。答: loadView 盡管不直接調(diào)用該方法,如多手動(dòng)創(chuàng)建自己的視圖虎忌,那么應(yīng)該覆蓋這個(gè)方法并將它們賦值給試圖控制器的 view 屬性泡徙。viewDidLoad 只有在視圖控制器將其視圖載入到內(nèi)存之后才調(diào)用該方法,這是執(zhí)行任何其他初始化操作的入口膜蠢。viewDidUnload 當(dāng)試圖控制器從內(nèi)存釋放自己的方法的時(shí)候調(diào)用堪藐,用于清楚那些可能已經(jīng)在試圖控制器中創(chuàng)建的對(duì)象。viewVillAppear 當(dāng)試圖將要添加到窗口中并且還不可見的時(shí)候或者上層視圖移出圖層后本視圖變成頂級(jí)視圖時(shí)調(diào)用該方法挑围,用于執(zhí)行諸如改變視圖方向等的操作礁竞。實(shí)現(xiàn)該方法時(shí)確保調(diào)用 [super viewWillAppear:].viewDidAppear 當(dāng)視圖添加到窗口中以后或者上層視圖移出圖層后本視圖變成頂級(jí)視圖時(shí)調(diào)用,用于放置那些需要在視圖顯示后執(zhí)行的代碼杉辙。確保調(diào)用 [super viewDidAppear: ] 模捂。35.? 動(dòng)畫有基本類型有哪幾種;表視圖有哪幾種基本樣式(10分)奏瞬?答:動(dòng)畫有兩種基本類型:隱式動(dòng)畫和顯式動(dòng)畫枫绅。36.? 實(shí)現(xiàn)簡(jiǎn)單的表格顯示需要設(shè)置UITableView的什么屬性、實(shí)現(xiàn)什么協(xié)議(10分)硼端?答:實(shí)現(xiàn)簡(jiǎn)單的表格顯示需要設(shè)置 UITableView 的 dataSource 和 delegate 屬性并淋,實(shí)現(xiàn)UITableViewDataSource 和 UITableViewDelegate 協(xié)議。37.? Cocoa Touch提供了哪幾種Core Animation過渡類型(10分)珍昨?答: Cocoa Touch 提供了 4 種 Core Animation 過渡類型县耽,分別為:交叉淡化句喷、推擠、顯示和覆蓋兔毙。38.? UIView與CLayer有什么區(qū)別(10分)唾琼?答: 1. UIView 是 iOS 系統(tǒng)中界面元素的基礎(chǔ),所有的界面元素都是繼承自它澎剥。它本身完全是由 CoreAnimation 來實(shí)現(xiàn)的锡溯。它真正的繪圖部分,是由一個(gè) CALayer 類來管理哑姚。 UIView 本身更像是一個(gè) CALayer 的管理器祭饭,訪問它的跟繪圖和跟坐標(biāo)有關(guān)的屬性。2. UIView 有個(gè)重要屬性 layer 叙量,可以返回它的主 CALayer 實(shí)例倡蝙。3. UIView 的 CALayer 類似 UIView 的子 View 樹形結(jié)構(gòu),也可以向它的 layer 上添加子layer 绞佩,來完成某些特殊的表示寺鸥。即 CALayer 層是可以嵌套的。4. UIView 的 layer 樹形在系統(tǒng)內(nèi)部品山,被維護(hù)著三份 copy 胆建。分別是邏輯樹,這里是代碼可以操縱的谆奥;動(dòng)畫樹眼坏,是一個(gè)中間層,系統(tǒng)就在這一層上更改屬性酸些,進(jìn)行各種渲染操作宰译;顯示樹,其內(nèi)容就是當(dāng)前正被顯示在屏幕上得內(nèi)容魄懂。5. 動(dòng)畫的運(yùn)作:對(duì) UIView 的 subLayer (非主 Layer )屬性進(jìn)行更改沿侈,系統(tǒng)將自動(dòng)進(jìn)行動(dòng)畫生成,動(dòng)畫持續(xù)時(shí)間的缺省值似乎是 0.5 秒市栗。6. 坐標(biāo)系統(tǒng): CALayer 的坐標(biāo)系統(tǒng)比 UIView 多了一個(gè) anchorPoint 屬性缀拭,使用CGPoint 結(jié)構(gòu)表示,值域是 0~1 填帽,是個(gè)比例值蛛淋。這個(gè)點(diǎn)是各種圖形變換的坐標(biāo)原點(diǎn),同時(shí)會(huì)更改 layer 的 position 的位置篡腌,它的缺省值是 {0.5,0.5} 褐荷,即在 layer 的中央。7. 渲染:當(dāng)更新層嘹悼,改變不能立即顯示在屏幕上叛甫。當(dāng)所有的層都準(zhǔn)備好時(shí)层宫,可以調(diào)用setNeedsDisplay 方法來重繪顯示。8. 變換:要在一個(gè)層中添加一個(gè) 3D 或仿射變換其监,可以分別設(shè)置層的 transform 或affineTransform 屬性萌腿。9. 變形: Quartz Core 的渲染能力,使二維圖像可以被自由操縱抖苦,就好像是三維的毁菱。圖像可以在一個(gè)三維坐標(biāo)系中以任意角度被旋轉(zhuǎn),縮放和傾斜锌历。 CATransform3D 的一套方法提供了一些魔術(shù)般的變換效果鼎俘。39.鏈表翻轉(zhuǎn)。? ? ? 40.? 鏈表逆序(C語言)(10分)辩涝。鏈表逆序就是把一個(gè)鏈表按照原來的鏈接順序逆序?qū)崿F(xiàn)(也就是將頭變成尾,尾變成頭)勘天。編程思路:其實(shí)最關(guān)鍵的是先通過原來的鏈接順序找到下個(gè)節(jié)點(diǎn)怔揩,然后再把前個(gè)節(jié)點(diǎn)反序。41. Quatrz 2D的繪圖功能的三個(gè)核心概念是什么并簡(jiǎn)述其作用(10分)脯丝。答:上下文:主要用于描述圖形寫入哪里商膊;路徑:是在圖層上繪制的內(nèi)容;狀態(tài):用于保存配置變換的值宠进、填充和輪廓晕拆, alpha 值等。42.? iPhone OS主要提供了幾種播放音頻的方法(10分)材蹬?答: SystemSound ServicesAVAudioPlayer 類Audio Queue ServicesOpenAL43.? 使用AVAudioPlayer類調(diào)用哪個(gè)框架实幕、使用步驟(10分)?答: AVFoundation.framework步驟:配置 AVAudioPlayer 對(duì)象堤器;實(shí)現(xiàn) AVAudioPlayer 類的委托方法昆庇;控制 AVAudioPlayer 類的對(duì)象;監(jiān)控音量水平闸溃;回放進(jìn)度和拖拽播放整吆。44.? 有哪幾種手勢(shì)通知方法、寫清楚方法名(10分)辉川?答:-(void)touchesBegan:(NSSet*)touchedwithEvent:(UIEvent*)event;-(void)touchesMoved:(NSSet*)touched withEvent:(UIEvent*)event;-(void)touchesEnded:(NSSet*)touchedwithEvent:(UIEvent*)event;-(void)touchesCanceled:(NSSet*)touchedwithEvent:(UIEvent*)event;45.? 實(shí)例化一個(gè)UITableView對(duì)象表蝙,要求寫出關(guān)鍵語句(10分)。答: UITableView *my = [[UITableView alloc]initWithFrame:<(CGRect)frame> style:<(UITableViewStyle)style>];my.delegate = self;my.dataSource = self;首先需要分配空間設(shè)置表格類型然后需要設(shè)置兩個(gè)必須的委托對(duì)象乓旗。46.? CFSocket使用有哪幾個(gè)步驟(10分)府蛇。答:創(chuàng)建 Socket 的上下文;創(chuàng)建 Socket 寸齐;配置要訪問的服務(wù)器信息欲诺;封裝服務(wù)器信息抄谐;連接服務(wù)器;47.? Core Foundation中提供了哪幾種操作Socket的方法(10分)扰法?答: CFNetwork 蛹含、 CFSocket 和 BSD Socket 。48.? 解析XML文件有哪幾種方式(10分)塞颁?答:以 DOM 方式解析 XML 文件浦箱;以 SAX 方式解析 XML 文件;49.? 自定義一個(gè)委托(15分)祠锣。答: @protocol SimpleProtocol-(void)doSomething:(NSString*)str;@end@interfaceSimpleClass:NSObject< SimpleProtocol >{}@end@implementationSimpleClass-(void)doSomething:(NSString *)str{NSLog(str);}@end50.? 類別的作用酷窥?繼承和類別在實(shí)現(xiàn)中有何區(qū)別?答案: category 可以在不獲悉伴网,不改變?cè)瓉泶a的情況下往里面添加新的方法蓬推,只能添加,不能刪除修改澡腾。 并且如果類別和原來類中的方法產(chǎn)生名稱沖突沸伏,則類別將覆蓋原來的方法,因?yàn)轭悇e具有更高的優(yōu)先級(jí)动分。 類別主要有 3 個(gè)作用: (1) 將類的實(shí)現(xiàn)分散到多個(gè)不同文件或多個(gè)不同框架中毅糟。 (2) 創(chuàng)建對(duì)私有方法的前向引用。 (3) 向?qū)ο筇砑臃钦絽f(xié)議澜公。 繼承可以增加姆另,修改方法,并且可以增加屬性坟乾。51.通知和協(xié)議的不同之處迹辐?答案:協(xié)議有控制鏈 (has-a) 的關(guān)系,通知沒有糊渊。 首先我一開始也不太明白右核,什么叫控制鏈(專業(yè)術(shù)語了 ~ )。但是簡(jiǎn)單分析下通知和代理的行為模式渺绒,我們大致可以有自己的理解 簡(jiǎn)單來說贺喝,通知的話,它可以一對(duì)多宗兼,一條消息可以發(fā)送給多個(gè)消息接受者躏鱼。代理按我們的理解,到不是直接說不能一對(duì)多殷绍,比如我們知道的明星經(jīng)濟(jì)代理人染苛,很多時(shí)候一個(gè)經(jīng)濟(jì)人負(fù)責(zé)好幾個(gè)明星的事務(wù)。 只是對(duì)于不同明星間,代理的事物對(duì)象都是不一樣的茶行,一一對(duì)應(yīng)躯概,不可能說明天要處理 A 明星要一個(gè)發(fā)布會(huì),代理人發(fā)出處理發(fā)布會(huì)的消息后畔师,別稱 B 的 發(fā)布會(huì)了娶靡。但是通知就不一樣,他只關(guān)心發(fā)出通知看锉,而不關(guān)心多少接收到感興趣要處理姿锭。 因此控制鏈( has-a 從英語單詞大致可以看出,單一擁有和可控制的對(duì)應(yīng)關(guān)系伯铣。52.關(guān)于多態(tài)性答案:多態(tài)呻此,子類指針可以賦值給父類。 這個(gè)題目其實(shí)可以出到一切面向?qū)ο笳Z言中腔寡, 因此關(guān)于多態(tài)焚鲜,繼承和封裝基本最好都有個(gè)自我意識(shí)的理解,也并非一定要把書上資料上寫的能背出來放前。 最重要的是轉(zhuǎn)化成自我理解恃泪。53.對(duì)于單例的理解答案:基本能用熟悉的語言寫出一個(gè)單例,以及可以運(yùn)用到的場(chǎng)景或是你編程中碰到過運(yùn)用的此種模式的框架類等犀斋。 進(jìn)一步點(diǎn),考慮下如何在多線程訪問單例時(shí)的安全性情连。54.? 是否在一個(gè)視圖控制器中嵌入兩個(gè)tableview控制器叽粹?答案:一個(gè)視圖控制只提供了一個(gè) View 視圖,理論上一個(gè) tableViewController 也不能放吧却舀, 只能說可以嵌入一個(gè) tableview 視圖虫几。當(dāng)然,題目本身也有歧義挽拔,如果不是我們定性思維認(rèn)為的 UIViewController 辆脸, 而是宏觀的表示視圖控制者,那我們倒是可以把其看成一個(gè)視圖控制者螃诅,它可以控制多個(gè)視圖控制器啡氢,比如 TabbarController 那樣的感覺。55. 一個(gè)tableView是否可以關(guān)聯(lián)兩個(gè)不同的數(shù)據(jù)源术裸?你會(huì)怎么處理倘是?答案:首先我們從代碼來看,數(shù)據(jù)源如何關(guān)聯(lián)上的袭艺,其實(shí)是在數(shù)據(jù)源關(guān)聯(lián)的代理方法里實(shí)現(xiàn)的搀崭。 因此我們并不關(guān)心如何去關(guān)聯(lián)他,他怎么關(guān)聯(lián)上猾编,方法只是讓我返回根據(jù)自己的需要去設(shè)置如相關(guān)的數(shù)據(jù)源瘤睹。 因此升敲,我覺得可以設(shè)置多個(gè)數(shù)據(jù)源啊,但是有個(gè)問題是轰传,你這是想干嘛呢驴党?想讓列表如何顯示,不同的數(shù)據(jù)源分區(qū)塊顯示绸吸?56. Object -c 的類可以多重繼承么鼻弧?可以實(shí)現(xiàn)多個(gè)接口么?重寫一個(gè)類的方式用繼承好還是分類 好锦茁?為什么攘轩?答案: Objective-c 只支持單繼承,如果要實(shí)現(xiàn)多繼承的話码俩,可以通過類別和協(xié)議的方式來實(shí)現(xiàn)度帮, cocoa 中所有的類都是 NSObject 的子類,多繼承在這里是用 protocol 委托代理來實(shí)現(xiàn)的稿存。57. id 聲明的對(duì)象有什么特性笨篷?答案: id 是個(gè)很重要的類型,是個(gè)可以指向任何類型的指針或者可以理解為指向任何未知類型的指針瓣履。58. 自動(dòng)釋放池跟GC (垃圾回收)有什么區(qū)別率翅?iPhone上有GC么?[poolrelease] 和[pooldrain]有什么區(qū)別袖迎?iPhone 上沒有 GC 冕臭。 iPhone 開發(fā)的時(shí)候沒有垃圾回收機(jī)制。 在垃圾回收環(huán)境中燕锥,release 是一個(gè)空操作辜贵。因此, NSAutoreleasePool 提供了 drain 方法归形,在引用計(jì)數(shù)環(huán)境中托慨,該方法的作用等同于調(diào)用 release ,但在垃圾回收環(huán)境中暇榴,它會(huì)觸發(fā)垃圾回收(如果自上次垃圾回收以來分配的內(nèi)存大于當(dāng)前的閾值)厚棵。因此,在通常情況下蔼紧,您應(yīng)該使用 drain 而不是 release 來銷毀自動(dòng)釋放池窟感。59.? 線程與進(jìn)程的區(qū)別和聯(lián)系?答案 : 進(jìn)程和線程都是由操作系統(tǒng)所體會(huì)的程序運(yùn)行的基本單元,系統(tǒng)利用該基本單元實(shí)現(xiàn)系統(tǒng)對(duì)應(yīng)用的并發(fā)性歉井。 程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式柿祈。進(jìn)程有獨(dú)立的地址空間,一個(gè)進(jìn)程崩潰后,在保護(hù)模式下不會(huì)對(duì)其它進(jìn)程產(chǎn)生影響躏嚎,而線程只是一個(gè)進(jìn)程中的不同執(zhí)行路徑蜜自。線程有自己的堆棧和局部變量,但線程之間沒有單獨(dú)的地址空間卢佣,一個(gè)線程死掉就等于整個(gè)進(jìn)程死掉重荠,所以多進(jìn)程的程序要比多線程的程序健壯,但在進(jìn)程切換時(shí)虚茶,耗費(fèi)資源較大戈鲁,效率要差一些。但對(duì)于一些要求同時(shí)進(jìn)行并且又要共享某些變量的并發(fā)操作嘹叫,只能用線程婆殿,不能用進(jìn)程。 60. ios 平臺(tái)怎么做數(shù)據(jù)的持久化?coredata 和sqlite有無必然聯(lián)系罩扇?coredata是一個(gè)關(guān)系型數(shù)據(jù)庫嗎婆芦?iOS 中可以有四種持久化數(shù)據(jù)的方式:屬性列表、對(duì)象歸檔喂饥、 SQLite3 和 Core Data消约; core data 可以使你以圖形界面的方式快速的定義 app 的數(shù)據(jù)模型,同時(shí)在你的代碼中容易獲取到它员帮。 coredata 提供了基礎(chǔ)結(jié)構(gòu)去處理常用的功能或粮,例如保存,恢復(fù)捞高,撤銷和重做被啼,允許你在 app 中繼續(xù)創(chuàng)建新的任務(wù)。在使用 core data 的時(shí)候棠枉,你不用安裝額外的數(shù)據(jù)庫系統(tǒng),因?yàn)?core data 使用內(nèi)置的 sqlite 數(shù)據(jù)庫泡挺。 core data 將你 app 的模型層放入到一組定義在內(nèi)存中的數(shù)據(jù)對(duì)象辈讶。 coredata 會(huì)追蹤這些對(duì)象的改變,同時(shí)可以根據(jù)需要做相反的改變娄猫,例如用戶執(zhí)行撤銷命令贱除。當(dāng) core data 在對(duì)你 app 數(shù)據(jù)的改變進(jìn)行保存的時(shí)候, core data 會(huì)把這些數(shù)據(jù)歸檔媳溺,并永久性保存月幌。 mac os x 中sqlite 庫,它是一個(gè)輕量級(jí)功能強(qiáng)大的關(guān)系數(shù)據(jù)引擎悬蔽,也很容易嵌入到應(yīng)用程序扯躺。可以在多個(gè)平臺(tái)使用, sqlite 是一個(gè)輕量級(jí)的嵌入式 sql 數(shù)據(jù)庫編程录语。與 core data 框架不同的是倍啥, sqlite 是使用程序式的, sql 的主要的 API 來直接操作數(shù)據(jù)表澎埠。 Core Data 不是一個(gè)關(guān)系型數(shù)據(jù)庫虽缕,也不是關(guān)系型數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 。雖然 Core Dta 支持SQLite 作為一種存儲(chǔ)類型蒲稳,但它不能使用任意的 SQLite 數(shù)據(jù)庫氮趋。 Core Data 在使用的過程種自己創(chuàng)建這個(gè)數(shù)據(jù)庫。 Core Data 支持對(duì)一江耀、對(duì)多的關(guān)系剩胁。61. obj-c 有多重繼承么? 如果沒有什么替代方法?cocoa 中所有的類都是NSObject 的子類,多繼承在這里是用protocol 委托代理來實(shí)現(xiàn)的决记。你不用去考慮繁瑣的多繼承摧冀,虛基類的概念。62. obj-c 有私有方法么? 私有變量呢系宫?objective-c - 類里面的方法只有兩種, 靜態(tài)方法和實(shí)例方法. 這似乎就不是完整的面向?qū)ο罅?按照OO的原則就是一個(gè)對(duì)象只暴露有用的東西. 如果沒有了私有方法的話, 對(duì)于一些小范圍的代碼重用就不那么順手了. 在類里面聲名一個(gè)私有方法@interface Controller : NSObject { NSString *something; }+ (void)thisIsAStaticMethod;- (void)thisIsAnInstanceMethod;@end@interface Controller (private) -(void)thisIsAPrivateMethod;@end @private 可以用來修飾私有變量在Objective‐C 中索昂,所有實(shí)例變量默認(rèn)都是私有的,所有實(shí)例方法默認(rèn)都是公有的63. 假定輸入的字符串中只包含字母和* 號(hào)扩借。編寫函數(shù)fun椒惨,功能是,除了中間和尾部的*號(hào)外潮罪,將字符串中其他* 號(hào)全部刪除康谆。編寫時(shí),不用c的其他函數(shù)嫉到。例:*****A*BC*DEF*G****? ? 結(jié)果為:A*BC*DEF*G****void fun (char *a) {int j=0;char *p=a;while (*p==’*')p++;while (*p){a[j++]=*p;p++; }a[j]=0; }64. 截取字符串”20 |http://www.621life.com“ 中 ‘|’字符前面及后面的數(shù)據(jù)沃暗,分別輸出它們(10分)。NSString *str = “20|http://www.621life.com”;NSRange range = [strrangeOfString:@"|"];int location = range.location;NSString *str1 = [strsubstringToIndex:location];NSString *str2 = [str substringFromIndex:location+1];65. 獲取項(xiàng)目根路徑何恶,并在其下創(chuàng)建一個(gè)名稱為userData 的目錄孽锥。(10分)。// 獲取根路徑NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);NSString *documentsDirectory = [paths objectAtIndex:];// 創(chuàng)建文件系統(tǒng)管理器NSFileManager *fileManager = [[NSFileManageralloc] init];// 判斷userData 目錄是否存在if(![fileManagerfileExistsAtPath:[NSStringstringWithFormat:@"%@/userData",documentsDirectory]]) {// 不存在, 創(chuàng)建一個(gè)userData目錄[fileManagercreateDirectoryAtPath:[NSStringstringWithFormat:@"%@/userData",documentsDirectory]withIntermediateDirectories:falseattributes:nilerror:nil];}66. tableView 的重用機(jī)制(10 分)细层?UITableView 通過重用單元格來達(dá)到節(jié)省內(nèi)存的目的: 通過為每個(gè)單元格指定一個(gè)重用標(biāo)識(shí)符(reuseIdentifier),即指定了單元格的種類,以及當(dāng)單元格滾出屏幕時(shí),允許恢復(fù)單元格以便重用.對(duì)于不同種類的單元格使用不同的ID,對(duì)于簡(jiǎn)單的表格,一個(gè)標(biāo)識(shí)符就夠了.67. 這段代碼有什么問題嗎@implementation Person? i.? ? ? (void)setAge:(int)newAge{? self.age = newAge;? }死循環(huán)68. 用變量a 給出下面的定義a)? ? 一個(gè)整型b)? ? 一個(gè)指向整型數(shù)的指針c)? ? 一個(gè)指向指針的的指針惜辑,它指向的指針是指向一個(gè)整型數(shù)d)? ? 一個(gè)有10 個(gè)整型數(shù)的數(shù)組e)? ? 一個(gè)有10 個(gè)指針的數(shù)組,該指針是指向一個(gè)整型數(shù)的f)? ? 一個(gè)指向有10 個(gè)整型數(shù)數(shù)組的指針g)? ? 一個(gè)指向函數(shù)的指針疫赎,該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)h)? ? 一個(gè)有10 個(gè)指針的數(shù)組盛撑,該指針指向一個(gè)函數(shù),該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù) a)? ? int a;b)? ? int *a;c)? ? int **a;d)? ? int a[10]e)? ? int *a[10];f)? ? int (*a)[10];g)? ? int (*a)(int);i)? ? int (*a[10])(int); 69. 給定一個(gè)字符串捧搞,輸出本字符串中只出現(xiàn)一次并且最靠前的那個(gè)字符的位置抵卫?比如”abaccddeeef” 則是b狮荔,輸出2 int find(char *_str){char *p = _str;inti = 1;while (*p){char *temp = _str;while (*temp){if ((*p ==*temp)&&(p != temp)){break;}temp++;if (*temp == 0) {returni;}}i++;p++;}return-1;}#include#include#includeintfind_char(constchar* str){staticintpos[256];const unsigned char* p =(const unsigned char*)str;inti = 0;if( (!str) || (!(*str)) )return -1;memset(pos,-1,sizeof(pos));while(*p){if(pos[*p] == -1){pos[*p] = p-(const unsigned char*)str;}else{pos[*p] = -2;}p++;}for(i=0;i=0)returnpos[i];}return -1;}int main(){constchar* p =”abaccddeeef”;intpos = find_char(p);printf(“%d, it is’%c’\n”,pos,pos!=-1?p[pos]:’ ‘);p =”abcdefghijklmnopqrstuvwxyz ““abcdefghijklmnopqrstuwxyz”;pos = find_char(p);printf(“%d, it is’%c’\n”,pos,pos!=-1?p[pos]:’ ‘);return0;}70. objective-c 中的數(shù)字對(duì)象都有哪些,簡(jiǎn)述它們與基本數(shù)據(jù)類型的區(qū)別是什么陌僵?在OC 中NSNumber是數(shù)字對(duì)象轴合,可以進(jìn)行拆裝箱操作!// 將int 轉(zhuǎn)為NSNumberNSNumber *num = [NSNumber numberWithInt:123];// 得到一個(gè)intinttestNum = [numintValue];71. 用NSLog 函數(shù)輸出一個(gè)浮點(diǎn)類型碗短,結(jié)果四舍五入受葛,并保留一位小數(shù)NSLog(@”%0.1f”,4.4324);72. objective-c 中的詞典對(duì)象、可變?cè)~典對(duì)象是哪個(gè)偎谁,初始化一個(gè)含有兩個(gè)鍵值對(duì)的可變?cè)~典對(duì)象总滩,并動(dòng)態(tài)的添加和刪除一條記錄,輸出第一條記錄.詞典NSDictionary 巡雨,可變?cè)~典NSMutableDictionary闰渔,// 初始化一個(gè)可變?cè)~典,帶有2 個(gè)鍵值對(duì)NSMutableDictionary *dic =[NSMutableDictionarydictionaryWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2",nil];// 添加[dicsetObject:@"value3"forKey:@"key3"];// 刪除[dicremoveObjectForKey:@"key3"];// 獲阮硗(按key 獲雀越А)[dicobjectForKey:@"key1"];73. 獲取項(xiàng)目根路徑,并在其下創(chuàng)建一個(gè)名稱為userData 的目錄正蛙。// 獲取根路徑NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);NSString*documentsDirectory = [paths objectAtIndex:];// 創(chuàng)建文件系統(tǒng)管理器NSFileManager *fileManager= [[NSFileManageralloc] init];// 判斷userData 目錄是否存在if(![fileManagerfileExistsAtPath:[NSStringstringWithFormat:@"%@/userData",documentsDirectory]]) {// 不存在, 創(chuàng)建一個(gè)userData目錄[fileManagercreateDirectoryAtPath:[NSStringstringWithFormat:@"%@/userData",documentsDirectory]withIntermediateDirectories:falseattributes:nilerror:nil];}74. do-while 與 while-do 的區(qū)別督弓?do-while 先執(zhí)行循環(huán)體,然后判斷條件乒验,如果條件判斷為ture 愚隧,則繼續(xù)執(zhí)行循環(huán)體,如果判斷為false锻全,則不執(zhí)行循環(huán)體while-do 是先判斷條件是否正確狂塘,若正確則執(zhí)行循環(huán)體,若不正確則不執(zhí)行循環(huán)體鳄厌。所以do-while 至少循環(huán)一次荞胡,而while-do有可能一次也不循環(huán)。75. 用C 語言了嚎,求2到100內(nèi)的所有素?cái)?shù)和泪漂。 #includeintisPrime(int n)? ? ? ? ? ? // 求素?cái)?shù),這是最經(jīng)典的算法代碼新思。建議記住

{

inti;

for(i=2;i*i<=n;i++)

if(n%i==0)

return 0;

return 1;

}

int main()

{

inti,sum=0;

for(i=2;i<100;i++)

if( isPrime(i))

sum+=i;

printf(“%5d”,sum);

return 0 ;

}

intisPrime(int n)

{

inti;

for(i=2;i<=n/2;i++)

{

if(n%i==0)

break;

}

if(i>n/2)

return1;

else

return0;

}

76.單件實(shí)例是什么(10分)。

Foundation?和 Application Kit?框架中的一些?類?只允?許創(chuàng)?建?單?件?對(duì)?象赘风,即?這?些?類?在當(dāng)前?進(jìn)?程中的唯一?實(shí)?例夹囚。?舉?例來?說?,NSFileManager?和NSWorkspace?類?在使用時(shí)?都是基于?進(jìn)?程?進(jìn)?行?單?件?對(duì)?象的?實(shí)?例化邀窃。當(dāng)向?這?些?類請(qǐng)?求?實(shí)?例的?時(shí)?候荸哟,它?們會(huì)向您?傳遞單?一?實(shí)?例的一個(gè)引用假哎,如果?該實(shí)?例?還?不存在,?則?首先?進(jìn)?行?實(shí)?例的分配 和初始化鞍历。?單?件?對(duì)?象充當(dāng)控制中心的角色舵抹,?負(fù)責(zé)?指引或?協(xié)調(diào)類?的各種服?務(wù)?。如果?類?在概念上只有一個(gè)?實(shí)?例(比如

NSWorkspace?)劣砍,就?應(yīng)該產(chǎn)?生 一個(gè)?單?件?實(shí)?例惧蛹,而不是多個(gè)?實(shí)?例;如果將來某一天可能有多個(gè)?實(shí)?例刑枝,您可以使用?單?件?實(shí)?例機(jī)制香嗓,而不是工廠方法或函數(shù)。

77.自動(dòng)釋放池是什么,如何工作装畅。

當(dāng)您向一個(gè)對(duì)象發(fā)送一個(gè)autorelease?消息時(shí)靠娱,Cocoa就會(huì)將該對(duì)象的一個(gè)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市掠兄,隨后出現(xiàn)的幾起案子像云,更是在濱河造成了極大的恐慌,老刑警劉巖蚂夕,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迅诬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡双抽,警方通過查閱死者的電腦和手機(jī)百框,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來牍汹,“玉大人铐维,你說我怎么就攤上這事∩鞣疲” “怎么了嫁蛇?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)露该。 經(jīng)常有香客問我睬棚,道長(zhǎng),這世上最難降的妖魔是什么解幼? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任抑党,我火速辦了婚禮,結(jié)果婚禮上撵摆,老公的妹妹穿的比我還像新娘底靠。我一直安慰自己,他們只是感情好特铝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布暑中。 她就那樣靜靜地躺著壹瘟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鳄逾。 梳的紋絲不亂的頭發(fā)上稻轨,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音雕凹,去河邊找鬼殴俱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛请琳,可吹牛的內(nèi)容都是我干的粱挡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼俄精,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼询筏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起竖慧,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤嫌套,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后圾旨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體踱讨,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年砍的,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了痹筛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡廓鞠,死狀恐怖帚稠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情床佳,我是刑警寧澤滋早,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站砌们,受9級(jí)特大地震影響杆麸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜浪感,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一昔头、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧影兽,春花似錦揭斧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至茧妒,卻和暖如春萧吠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桐筏。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人脱篙。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓僧鲁,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親牧氮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子琼腔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運(yùn)用指針編程是C語言最主要的風(fēng)格之一踱葛。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu)丹莲; ...
    朱森閱讀 3,446評(píng)論 3 44
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,150評(píng)論 30 470
  • #import和#include的區(qū)別 @class? @class一般用于頭文件中需要聲明該類的某個(gè)實(shí)例變量的時(shí)...
    sellse閱讀 325評(píng)論 0 2
  • 1.#import和#include的區(qū)別 @class? @class一般用于頭文件中需要聲明該類的某個(gè)實(shí)例變量...
    晚照清舟閱讀 407評(píng)論 0 0
  • 昨天學(xué)到的是好詞尸诽,今天卻是不吉利的Ominous甥材,乍一看有點(diǎn)像Omnipotent(萬能的),因?yàn)镺mni作為詞綴...
    FeBird閱讀 1,067評(píng)論 0 0