天天看點

常見的IOS面試題整理(附答案)待更新

常見的IOS面試題,有時間就整理一下,既可以鞏固自己的基礎知識,又可以為給我IOS猿媛們提供一下參考。(如有不對的地方,望請大家指出)

歡迎大家來和我一起交流技術:QQ970941938。

1. object-c有多繼承嗎?如果沒有,用什麼來替代呢?

參考答案:所有的類都基于NSObject,可以用protocol代理來實作多繼承的特性。

2. 深淺拷貝類:

2.1 父類實作深拷貝時,子類如何實作深拷貝;父類沒有實作深拷貝時,子類又該如何實作深拷貝?

參考答案:

  • 深拷貝與淺拷貝的差別:淺拷貝屬于指針拷貝,對一個對象進行淺拷貝,相當于對指向的對象的對象進行複制,生成一個新的指向這個對象的指針,即兩個指針指向同一對象,該對象一銷毀,兩個指針都會變成null。深拷貝是對對象進行拷貝,即生成兩個指針指向兩個對象,其中一個對象被銷毀,另一個對象不受影響。
  • 深拷貝需要實作NSCoying協定,實作-(id)copyWithZone:(NSZone *)zone方法。當對一個property屬性含有copy修飾符的時候,在進行指派操作的時候實際上就是調用這個方法。
  • 父類實作深拷貝之後,子類隻要重寫copyWithZone方法,在方法内部調用父類的copyWithZone方法,之後實作自己的屬性的處理
  • 父類沒有實作深拷貝,子類除了需要對自己的屬性進行處理,還要對父類的屬性進行處理。

3. KVO,NSNotification,delegate,block的差別是什麼?

參考答案:

  • KVO就是cocoa架構實作的觀察者模式,是一對多的關系,一個值的變化會通知所有的觀察者。一般同KVC搭配使用。例如:一個X軸坐标的改變,會通知所有的觀察者。一般的使用場景的監測資料的變化。
  • NSNotification和KVO是一樣的,都是狀态變化之後告知對方,是一對多的關系(全局通知,弱關聯)。NSNotification的特點,就是需要被觀察者先主動發出通知,然後觀察者注冊監聽後再來進行響應,比KVO多了發送通知的一步,但是其優點是監聽不局限于屬性的變化,還可以對多種多樣的狀态變化進行監聽,監聽範圍廣,使用也更靈活。
  • delegate 是代理,就是我不想做的事情交給别人做,是一對一的關系(強關聯)。一般的使用場景是行為。
  • block是delegate的另一種形式,是函數式程式設計的一種形式。使用場景跟delegate一樣,相比delegate更靈活,而且代理的實作更直覺。