成人福利av,电视剧全集在线观看免费高清,99热影院,视频一区二区精品,电影色戒未删完整版迅雷下载,激情欧美一区二区三区,亚洲热在线观看

iPhone軟件開發(fā)面試題(5)

時間:2024-08-23 22:35:46 學(xué)人智庫 我要投稿
  • 相關(guān)推薦

iPhone軟件開發(fā)面試題(5)

  41.對象是在什么時候被release的?

iPhone軟件開發(fā)面試題(5)

  答:autorelease實際上只是把對release的調(diào)用延遲了,對于每一個Autorelease,系統(tǒng)只是把該Object放入了當(dāng)前的Autorelease pool中,當(dāng)該pool被釋放時,該pool中的所有Object會被調(diào)用Release。對于每一個Runloop,系統(tǒng)會隱式創(chuàng)建一個Autorelease pool,這樣所有的release pool會構(gòu)成一個象CallStack一樣的一個棧式結(jié)構(gòu),在每一個Runloop結(jié)束時,當(dāng)前棧頂?shù)腁utorelease pool會被銷毀,這樣這個pool里的每個Object(就是autorelease的對象)會被release。那什么是一個Runloop呢?一個UI事件,Timer call, delegate call, 都會是一個新的Runloop。

  42.這段代碼有什么問題,如何修改

  for (int i = 0; i

  {

  NSString *string = @”Abc”;

  string = [string lowercaseString];

  string = [string stringByAppendingString:@"xyz"];

  NSLog(@“%@”, string);

  }

  答:會內(nèi)存泄露,

  for(int i = 0; i<1000;i ){

  NSAutoreleasePool * pool1 = [[NSAutoreleasePool alloc] init];

  NSString *string = @"Abc";

  string = [string lowercaseString];

  string = [string stringByAppendingString:@"xyz"];

  NSLog(@"%@",string);

  [pool1 drain];

  }

  43.autorelease和垃圾回收機制(gc)有什么關(guān)系?

  44.IPhone OS有沒有垃圾回收(gc)?

  答:沒有。

  45.什么是Notification?

  答:觀察者模式,controller向defaultNotificationCenter添加自己的notification,其他類注冊這個notification就可以收到通知,這些類可以在收到通知時做自己的操作(多觀察者默認隨機順序發(fā)通知給觀察者們,而且每個觀察者都要等當(dāng)前的某個觀察者的操作做完才能輪到他來操作,可以用NotificationQueue的方式安排觀察者的反應(yīng)順序,也可以在添加觀察者中設(shè)定反映時間,取消觀察需要在viewDidUnload 跟dealloc中都要注銷)。參考鏈接:http://useyourloaf.com/blog/2010/6/6/delegation-or-notification.html

  46.什么時候用delegate,什么時候用Notification?

  答:delegate針對one-to-one關(guān)系,并且reciever可以返回值給sender,notification 可以針對one-to-one/many/none,reciever無法返回值給sender.所以,delegate用于sender希望接受到reciever的某個功能反饋值,notification用于通知多個object某個事件。

  47.什么是KVC和KVO?

  答:KVC(Key-Value-Coding)內(nèi)部的實現(xiàn):一個對象在調(diào)用setValue的時候,(1)首先根據(jù)方法名找到運行方法的時候所需要的環(huán)境參數(shù)。(2)他會從自己isa指針結(jié)合環(huán)境參數(shù),找到具體的方法實現(xiàn)的接口。(3)再直接查找得來的具體的方法實現(xiàn)。

  KVO(Key-Value-Observing):當(dāng)觀察者為一個對象的屬性進行了注冊,被觀察對象的isa指針被修改的時候,isa指針就會指向一個中間類,而不是真實的類。所以isa指針其實不需要指向?qū)嵗龑ο笳鎸嵉念。所以我們的程序最好不要依賴于isa指針。在調(diào)用類的方法的時候,最好要明確對象實例的類名。

  48.Notification和KVO有什么不同?

  49.KVO在ObjC中是怎么實現(xiàn)的?

  50.ViewController 的 loadView,viewDidLoad, viewDidUnload 分別是在什么時候調(diào)用的?在自定義ViewController的時候這幾個函數(shù)里面應(yīng)該做什么工作?

  答:viewDidLoad在view 從nib文件初始化時調(diào)用,loadView在controller的view為nil時調(diào)用。此方法在編程實現(xiàn)view時調(diào)用,view 控制器默認會注冊memory warning notification,當(dāng)view controller的任何view 沒有用的時候,viewDidUnload會被調(diào)用,在這里實現(xiàn)將retain 的view release,如果是retain的IBOutlet view 屬性則不要在這里release,IBOutlet會負責(zé)release 。

  51.ViewController 的 didReceiveMemoryWarning 是在什么時候被調(diào)用的?默認的操作是什么?

  答:默認調(diào)用[superdidReceiveMemoryWarning]

http://m.zcjyy.com/

【iPhone軟件開發(fā)面試題(5)】相關(guān)文章:

iPhone軟件開發(fā)面試題10-23

Microsoft面試題09-04

iOS面試題07-10

公司面試題09-12

iphone鎖屏密碼忘了怎么辦07-10

hibernate面試題10-18

英語面試題精選06-13

小升初面試題06-10

PHP面試題10-14

小升初面試題型08-24