iOS筆試題04

1. Object-C有多繼承嗎?沒有的話用什麼代替?

1> OC是單繼承,沒有多繼承函數

2> 有時能夠用分類category和協議protocol來代替多繼承性能

 

2. Object-C有私有方法嗎?私有變量呢?

1> OC沒有相似@private的修飾詞來修飾方法,只要寫在.h文件中,就是公共方法測試

2> 可使用類擴展(Extension/繼承來增長私有方法和私有變量spa

 

3. 關鍵字const什麼含義?

const int a;線程

int const a;代理

const int *a;指針

int const *a;對象

int * const a;繼承

int const * const a;進程

1> 前兩個的做用是同樣:是一個常整型數

2> 第3、四個意味着 是一個指向常整型數的指針(整型數是不可修改的,但指針能夠)

3> 第五個的意思:是一個指向整型數的常指針(指針指向的整型數是能夠修改的,但指針是不可修改的)

4> 最後一個意味着:是一個指向常整型數的常指針(指針指向的整型數是不可修改的,同時指針也是不可修改的)

 

4. static的做用?

1> static修飾的函數是一個內部函數,只能在本文件中調用,其餘文件不能調用

2> static修飾的所有變量是一個內部變量,只能在本文件中使用,其餘文件不能使用

3> static修飾的局部變量只會初始化一次,而且在程序退出時纔會回收內存

 

5. 線程和進程的區別?

1> 一個應用程序對應一個進程,一個進程幫助程序佔據一塊存儲空間

2> 要想在進程中執行任務,就必須開啓線程,一條線程就表明一個任務

3> 一個進程中容許開啓多條線程,也就是同時執行多個任務

6. 堆和棧的區別?heapstack的區別?

1> 堆空間的內存是動態分配的,通常存放對象,而且須要手動釋放內存

2> 棧空間的內存由系統自動分配,通常存放局部變量等,不須要手動管理內存

 

7. 爲何不少內置的類,如TableViewdelegate的屬性是assign不是retain

1> tableView的代理通常都是它所屬的控制器,控制器會對它內部的view作一次retain操做

2> 假設tableView也對代理(控制器)作一次retain操做,那麼就出現循環retain問題

3> 循環問題有什麼後果?

 

8. 定義屬性時,什麼狀況使用copyassignretain

1> copyNSStringBlock等類型

2> assign:非OC對象類型, 基本數據類型(兩個對象相互引用的時候,一端用retain, 一端用assign

3> retainOC對象類型

 

9. 對象是何時被釋放的?

每一個對象都有一個引用計數器,每一個新對象的計數器是1,當對象的計數器減爲0時,就會被銷燬

 

 

10. ViewController loadViewviewDidLoadviewDidUnload分別是何時調用的,在自定義ViewCointroller時在這幾個函數中應該作什麼工做?

1> loadView

  • 當第一次使用控制器的view時,會調用loadView方法建立view
  • 通常在這裏自定義view

 

2> viewDidLoad

  • 當控制器的view建立完畢時會調用,也就是在loadView後調用
  • 通常在這裏添加子控件、初始化數據

 

3> viewDidUnload

  • 當控制器的view由於內存警告被銷燬時調用
  • 通常在這裏回收跟界面相關的資源(界面都會銷燬了,跟界面相關的資源確定不要了)

 

11. ViewControllerdidReceiveMemoryWarning是在何時調用的?默認的操做是什麼?

  • 當應用程序接收到系統的內容警告時,就有可能調用控制器的didRece…Warning方法
  • 它的默認作法是:

l 當控制器的view不在窗口上顯示時,就會直接銷燬,而且調用viewDidUnload方法

 

12. 怎麼理解MVC,在CocoaMVC是怎麼實現的?

1> MModel,模型,封裝數據

2> VView,視圖界面,負責展現數據

3> CController,控制器,負責提供數據(Model)給界面(View

 

13. self.self->什麼區別?

1> self.是調用get方法或者set方法

2> self是當前自己,是一個指向當前對象的指針

3> self->是直接訪問成員變量

 

14. idnil表明什麼?

1> id類型的指針能夠指向任何OC對象

2> nil表明空值(空指針的值, 0

 

15. 如何對iOS設備進行性能測試?

Profile-> Instruments ->Time Profiler

相關文章
相關標籤/搜索