最新高清无码专区,无人区码一码二码w358cc,99在线精品国自产拍不卡,亚洲国产欧美在线成人APP,男人天堂a在线,亚洲熟妇色,伊人毛片,国产精品亚洲mnbav网站

iPhone軟件開發面試題(5)

時間:2024-08-23 22:35:46 學人智庫

iPhone軟件開發面試題(5)

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

iPhone軟件開發面試題(5)

  答:autorelease實際上只是把對release的調用延遲了,對于每一個Autorelease,系統只是把該Object放入了當前的Autorelease pool中,當該pool被釋放時,該pool中的所有Object會被調用Release。對于每一個Runloop,系統會隱式創建一個Autorelease pool,這樣所有的release pool會構成一個象CallStack一樣的一個棧式結構,在每一個Runloop結束時,當前棧頂的Autorelease 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);

  }

  答:會內存泄露,

  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)有什么關系?

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

  答:沒有。

  45.什么是Notification?

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

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

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

  47.什么是KVC和KVO?

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

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

  48.Notification和KVO有什么不同?

  49.KVO在ObjC中是怎么實現的?

  50.ViewController 的 loadView,viewDidLoad, viewDidUnload 分別是在什么時候調用的?在自定義ViewController的時候這幾個函數里面應該做什么工作?

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

  51.ViewController 的 didReceiveMemoryWarning 是在什么時候被調用的?默認的操作是什么?

  答:默認調用[superdidReceiveMemoryWarning]

http://m.gz-dh.cn/

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

iPhone軟件開發面試題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