iOS程式設計師面試要注意的幾個問題~
當您向一個物件傳送一個autorelease訊息時,Cocoa就會將該物件的一個引用放入到最新的自動釋放池。它仍然是個正當的物件,因此自動釋放池定義的作用域內的其它物件可以向它傳送訊息。當程式執行到作用域結束的位置時,自動釋放池就會被釋放,池中的所有物件也就被釋放。
2說一說static 關鍵字(1)函式體內 static 變數的作用範圍為該函式體,不同於 auto 變數,該變數的記憶體只被分配一次, 因此其值在下次呼叫時仍維持上次的值;
(2)在模組內的 static 全域性變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問;
(3)在模組內的 static 函式只可被這一模組內的其它函式呼叫,這個函式的使用範圍被限制在宣告它的模組內;
(4)在類中的 static 成員變數屬於整個類所擁有,對類的所有物件只有一份拷貝;
(5)在類中的 static 成員函式屬於整個類所擁有,這個函式不接收 this 指標,因而只能訪問類的static 成員變數。
Foundation 和 Application Kit 框架中的一些類只允許建立單件物件,即這些類在當前程式中的唯一例項。
舉例來說,NSFileManager 和NSWorkspace 類在使用時都是基於程式進行單件物件的例項化。當向這些類請求例項的時候,它們會向您傳遞單一例項的一個引用,如果該例項還不存在,則首先進行例項的分配和初始化。單件物件充當控制中心的角色,負責指引或協調類的各種服務。
如果類在概念上只有一個例項(比如NSWorkspace),就應該產生一個單件例項,而不是多個例項;如果將來某一天可能有多個例項,您可 以使用單件例項機制,而不是工廠方法或函式。
objc優點:
1) Cateogies
2) Posing
3) 動態識別
4) 指標計算
5)彈性訊息傳遞
6) 不是一個過度複雜的 C 衍生語言
7) Objective-C 與 C++ 可混合程式設計
不足:
1) 不支援名稱空間
2) 不支援運算子過載
3)不支援多重繼承
4)使用動態執行時型別,所有的方法都是函式呼叫,所以很多編譯時優化方法都用不到。(如行內函數等),效能低劣。
@class一般用於標頭檔案中需要宣告該類的某個例項變數的時候用到,在m檔案中還是需要使用#import;
而#import比起#include的好處就是不會引起重複包含。
程式和執行緒都是由作業系統所體會的程式執行的基本單元,系統利用該基本單元實現系統對應用的併發性。
程式和執行緒的主要差別在於它們是不同的作業系統資源管理方式。程式有獨立的地址空間,一個程式崩潰後,在保護模式下不會對其它程式產生影響,而執行緒只是一個程式中的不同執行路徑。
執行緒有自己的堆疊和區域性變數,但執行緒之間沒有單獨的地址空間,一個執行緒死掉就等於整個程式死掉,所以多程式的程式要比多執行緒的程式健壯,但在程式切換時,耗費資源較大,效率要差一些。但對於一些要求同時進行並且又要共享某些變數的併發操作,只能用執行緒,不能用程式。
(1)當你使用new,alloc,copy,mutableCopy方法建立一個物件時,該物件的保留計數器值為1.當你不再使用該物件時,你要負責向該物件傳送一條release或autorelease訊息.這樣,該物件將在使用壽命結束時被銷燬.
(2)當你通過任何其他方法獲得一個物件時,則假設該物件的保留計數器值為1,而且已經被設定為自動釋放,你不需要執行任何操作來確保該物件被清理.如果你打算在一段時間內擁有該物件,則需要保留它並確保在操作完成時釋放它.
(3)如果你保留了某個物件,你需要(最終)釋放或自動釋放該物件.必須保持retain方法和release方法的使用次數相等.
屬性readwrite,readonly,assign,retain,copy,nonatomic 各是什麼作用,在哪種情況下用?
readwrite 是可讀可寫特性,需要生成getter方法和setter方法時;
readonly 是隻讀特性,只會生成getter方法,不會生成setter方法,不希望屬性在類外改變;
assign 是賦值特性,setter方法將傳入引數賦值給例項變數,僅設定變數時;
retain 表示持有特性,setter方法將傳入引數先保留,再賦值,傳入引數的retaincount會+1;
copy 表示賦值特性,setter方法將傳入物件複製一份,需要完全一份新的變數時;
nonatomic 非原子操作,決定編譯器生成的setter getter是否是原子操作,atomic表示多執行緒安全,一般使用nonatomic。
原文連結:http://www.itjhwd.com/ioscxymsyzywt/
github主頁:https://github.com/chenyufeng1991 。歡迎大家訪問!
相關文章
- IBM面試需要注意的幾個問題IBM面試
- 100個 iOS 程式設計師面試題彙總iOS程式設計師面試題
- 10個我最喜歡問程式設計師的面試問題程式設計師面試
- 程式設計師創業需要注意哪些問題?程式設計師創業
- 程式設計師面試,我最喜歡的10個問題程式設計師面試
- 程式設計師面試中的5個殺手鐗問題程式設計師面試
- 網路爬蟲設計中需要注意的幾個問題爬蟲
- Java程式設計師面試常見問題Java程式設計師面試
- iOS編碼需要注意的幾點問題iOS
- 嵌入式程式設計師應知道的幾個基本問題(轉)程式設計師
- 聊聊設計師面試會問的問題面試
- 一個ios程式設計師年後找工作經歷(附上一些面試問題)iOS程式設計師面試
- Java程式設計師面試時應注意的三個經典問題!Java程式設計師面試
- 5年程式設計師面試,常見面試問題解析程式設計師面試
- 程式設計師需要自問的 10 個問題程式設計師
- 程式設計師面試常問計算機網路問題程式設計師面試計算機網路
- 程式設計師面試中有幾大法則程式設計師面試
- 【轉】程式設計師求職面試中經常遇到的面試問題程式設計師求職面試
- 程式設計師面試IT公司,這些地方你要注意!程式設計師面試
- PHP程式設計師面試題PHP程式設計師面試題
- iOS面試·一個iOS程式設計師的BAT面試全記錄(內含百度+網易+阿里面試真題)iOS面試程式設計師BAT阿里
- 好程式設計師分享:Java面試題常見問題程式設計師Java面試題
- iOS APNs的幾個問題iOS
- 不少程式設計師都會碰到的三個面試題程式設計師面試題
- Python import 時要注意的幾個問題PythonImport
- Java面試常問的幾個問題Java面試
- 手機遊戲設計需要注意的7個問題遊戲設計
- [併發程式設計]-關於 CAS 的幾個問題程式設計
- JAVA程式設計師面試32問Java程式設計師面試
- 面試了一個 5 年 Java 程式設計師,一個問題也不會。。面試Java程式設計師
- Java程式設計師面試中的多執行緒問題Java程式設計師面試執行緒
- 程式設計師解決問題的 60 個策略程式設計師
- 程式設計師解決問題的60個策略程式設計師
- 15個IT程式設計師必須思考的問題程式設計師
- 程式設計師世界常見的6個問題程式設計師
- 好程式設計師Java分享Javamain十個面試題程式設計師JavaAI面試題
- 常見的幾個Qt程式設計問題的處理QT程式設計
- 程式設計師的幾個搞笑瞬間!!!程式設計師