達內廣州IT培訓
美國上市IT培訓機構

18589266248

熱門課程

iOS面試基礎題型解析

  • 時間:2016-08-03 19:34
  • 發布:廣州IT培訓學校
  • 來源:企業面試題

想必一定有很多學員在學習iOS開發技術的同時,也在關注iOS的面試題一般都涵蓋了哪些知識范圍,現在達內的金牌講師就為大家闡述一下常考題型。

1.怎么理解MVC,在Cocoa中MVC是怎么實現的?

MVC設計模式考慮三種對象:模型對象、視圖對象、和控制器對象。模型對象代表特別的知識和專業技能,它們負責保有應用程序的數據和定義操作數據的邏輯。 視圖對象知道如何顯示應用程序的模型數據,而且可能允許用戶對其進行編輯。控制器對象是應用程序的視圖對象和模型對象之間的協調者。

2. KVC和KVO區別,分別在什么情況下使用?

KVC(Key-Value-Coding) KVO(Key-Value-Observing) 理解KVC與KVO(鍵-值-編碼與鍵-值-監看) 當通過KVC調用對象時,比如:[self valueForKey:@”someKey”]時,程序會自動試圖通過幾種不同的方式解析這個調用。首先查找對象是否帶有 someKey 這個方法,如果沒找到,會繼續查找對象是否帶有someKey這個實例變量(iVar),如果還沒有找到,程序會繼續試圖調用 -(id) valueForUndefinedKey:這個方法。如果這個方法還是沒有被實現的話,程序會拋出一個NSUndefinedKeyException 異常錯誤。 (Key-Value Coding查找方法的時候,不僅僅會查找someKey這個方法,還會查找getsomeKey這個方法,前面加一個get,或者_someKey以及 _getsomeKey這幾種形式。同時,查找實例變量的時候也會不僅僅查找someKey這個變量,也會查找_someKey這個變量是否存在。) 設計valueForUndefinedKey:方法的主要目的是當你使用-(id)valueForKey方法從對象中請求值時,對象能夠在錯誤發生 前,有最后的機會響應這個請求。

id、nil代表什么?

id id和void *并非完全一樣。在上面的代碼中,id是指向struct objc_object的一個指針,這個意思基本上是說,id是一個指向任何一個繼承了Object(或者NSObject)類的對象。需要注意的是id 是一個指針,所以你在使用id的時候不需要加星號。比如id foo=nil定義了一個nil指針,這個指針指向NSObject的一個任意子類。而id *foo=nil則定義了一個指針,這個指針指向另一個指針,被指向的這個指針指向NSObject的一個子類。 nil il和C語言的NULL相同,在objc/objc.h中定義。nil表示一個Objctive-C對象,這個對象的指針指向空(沒有東西就是空)。

內存管理 Autorelease、retain、copy、assign的set方法和含義?

1,你初始化(alloc/init)的對象,你需要釋放(release)它。例如: NSMutableArray aArray = [[NSArray alloc] init]; 后,需要 [aArray release];

2,你retain或copy的,你需要釋放它。例如: [aArray retain] 后,需要 [aArray release];

3,被傳遞(assign)的對象,你需要斟酌的retain和release。例如: obj2 = [[obj1 someMethod] autorelease]; 對象2接收對象1的一個自動釋放的值,或傳遞一個基本數據類型(NSInteger,NSString)時: 你或希望將對象2進行retain,以防止它在被使用之前就被自動釋放掉。但是在retain后,一定要在適當的時候進行釋放。

5. 簡述索引計數(Reference Counting) retain值 = 索引計數(Reference Counting) NSArray對象會retain(retain值加一)任何數組中的對象。當NSArray被卸載(dealloc)的時候,所有數組中的對象會被執行 一次釋放(retain值減一)。不僅僅是NSArray,任何收集類(Collection Classes)都執行類似操作。例如NSDictionary,甚至UINavigationController。 Alloc/init建立的對象,索引計數為1。無需將其再次retain。

[NSArray array]和[NSDate date]等“方法”建立一個索引計數為1的對象,但是也是一個自動釋放對象。所以是本地臨時對象,那么無所謂了。如果是打算在全Class中使用的變量 (iVar),則必須retain它。 缺省的類方法返回值都被執行了“自動釋放”方法。(*如上中的NSArray)

在類中的卸載方法“dealloc”中,release所有未被平衡的NS對象。(*所有未被autorelease,而retain值為1的)。

希望以上的問題,將你的疑惑點一掃而清,在iOS培訓的道路上再接再厲吧!

上一篇:C++ 類模板和模板類的深入解析
下一篇:linux企業招聘面試題

馬上預約三天免費體驗課

姓名:

電話:

選擇城市和中心
江西省

貴州省

廣西省

海南省

中文字幕综合