iOS 面試相關《一》

2022-05-07 12:24:10 字數 1119 閱讀 2039

因為公司招人的原因,導致自己不得不去面試別人,自己做開發也快三年了,但是相關基礎的概念、原理有點忘記了,記得也不是很系統

在這裡總結下吧,免得面試別人翻車了哈哈

1、屬性修飾詞

一、readonly,readwrite

答:readonly根據字面意思,唯讀屬性,只生成了getter方法,如果呼叫setter方法程式會cash。但是事實是這樣嘛?唯讀屬性真的不能賦值嗎,其實可以通過kvc去修改其鍵值。readwrite,預設可讀可寫,沒啥說的。

ps:self.和_的區別,self.就是呼叫property自動生成的getter和setter方法,而_則是直接去呼叫例項變數(property會自動生成乙個例項變數,如果你重寫了getter與setter方法,property自動生成的例項變數就無效了,需要手動去申明乙個例項變數或者用@@synthesize)。

二、atomic,nonatomic

答:atomic 預設的屬性修飾詞,非執行緒安全,只能保證取到值,不能保證該值在取的時候不會被修改。

nonatomic 非原子修飾,訪問速度更快,幾乎所有屬性都用這個修飾,執行緒安全通過訊號量、nslock來實現等。

三、assign、weak、strong

weak: 必須用於修飾物件,和assign的區別是會被立即釋放並且會被置為nil。一般用於修飾**和需要用完就被自動釋放的臨時物件。

strong:被修飾的物件引用計數會加一,強引用。

四、copy、mutablecopy、strong

答:先說下深淺拷貝,

深拷貝:物件拷貝,重新申請一片記憶體來保留該物件。

淺拷貝:指標拷貝,相當於引用計數加一,引用的是同乙個物件。

一般來說,copy是淺拷貝,mutablecopy是深拷貝,但是細講的話又可以更詳細點:可變字串或者陣列在copy後會發生深拷貝,變成不可變的物件。

mutablecopy一定是深拷貝,拷貝後一定是可變字串或者陣列,即使傳入的是不可變的物件。

為什麼nsstring要用copy修飾?使用copy修飾後,即使拷貝屬性來自可變字串,也會被深拷貝變成不可變字串,也就是源字串修改之後不會影響到屬性字串,增強了**的健壯性。

iOS面試題 一

圖中包含的設計模式 delegate 模式 notification kvo 觀察者模式 target action 命令模式 mvc 中介者模式 內建了策略模式 裝置並不在開發者賬號裡 有 些閃退,像ios10的時候,要我們加的那個訪問許可權,如相機的訪問,就是在plist 檔案 面加上.清 快取...

iOS面試題系列之UI相關

監聽系統事件 3 簡述推送訊息原理。2 有關於devicetoken變化問題 重新安裝或解除安裝應用程式,devicetoken不會發生變化。系統公升級devicetoken可能會發生變化。抹掉所有內容和設定,重置裝置後,devicetoken會變化 4 簡單說下uitableview uibutt...

iOS 演算法面試題(一)

1 不用中間變數,用兩種方法交換a和b的值 1.中間變數 void swap int a,int b 2.加法 void swap int a,int b 3.異或 相同為0,不同為1.可以理解為不進製加法 void swap int a,int b 2 求最大公約數 1.直接遍曆法 int max...