Object-C有多繼承嗎?沒有的話用什麼代替?緩存
OC是單繼承,沒有多繼承函數
有時能夠用分類和協議來代替多繼承性能
Object-C有私有方法嗎?私有變量呢?測試
OC沒有相似@private的修飾詞來修飾方法,只要寫在.h文件中,就是公共方法線程
能夠直接在.m文件中(好比類擴展)聲明和實現方法,對編譯器來講是私有的代理
關鍵字const什麼含義?指針
const int a;對象
int const a;繼承
const int *a;進程
int const *a;
int * const a;
int const * const a;
1> 前兩個的做用是同樣:a 是一個常整型數
2> 第3、四個意味着 a 是一個指向常整型數的指針(整型數是不可修改的,但指針能夠)
3> 第五個的意思:a 是一個指向整型數的常指針(指針指向的整型數是能夠修改的,但指針是不可修改的)
4> 最後一個意味着:a 是一個指向常整型數的常指針(指針指向的整型數是不可修改的,同時指針也是不可修改的)
static的做用?
static修飾的函數是一個內部函數,只能在本文件中調用,其餘文件不能調用
static修飾的所有變量是一個內部變量,只能在本文件中使用,其餘文件不能使用
static修飾的局部變量只會初始化一次,而且在程序退出時纔會回收內存
線程和進程的區別?
一個應用程序對應一個進程,一個進程幫助程序佔據一塊存儲空間
要想在進程中執行任務,就必須開啓線程,一條線程就表明一個任務
一個進程中容許開啓多條線程,也就是同時執行多個任務
堆和棧的區別?
堆空間的內存是動態分配的,通常存放對象,而且須要手動釋放內存
棧空間的內存由系統自動分配,通常存放局部變量等,不須要手動管理內存
爲何不少內置的類,如TableView的delegate的屬性是assign不是retain?
tableView的代理通常都是它所屬的控制器,控制器會對它內部的view作一次retain操做
假設tableView也對代理(控制器)作一次retain操做,那麼就出現循環retain問題
定義屬性時,什麼狀況使用copy、assign、retain?
copy:NSString、Block等類型
assign:基本數據類型
retain:OC對象類型
對象是何時被釋放的?
每一個對象都有一個引用計數器,每一個新對象的計數器是1,當對象的計數器減爲0時,就會被銷燬
tableView的重用機制?
這裏只是簡述:將離開屏幕的cell放到緩存池,從新拿來顯示到屏幕的其餘位置(其餘本身詳細描述)
ViewController 的loadView、viewDidLoad、viewDidUnload分別是何時調用的,在自定義ViewCointroller時在這幾個函數中應該作什麼工做?
loadView
當第一次使用控制器的view時,會調用loadView方法建立view
通常在這裏自定義view
viewDidLoad
當控制器的view建立完畢時會調用,也就是在loadView後調用
通常在這裏添加子控件、初始化數據
viewDidUnload
當控制器的view由於內存警告被銷燬時調用
通常在這裏回收跟界面相關的資源(界面都會銷燬了,跟界面相關的資源確定不要了)
ViewController的didReceiveMemoryWarning是在何時調用的?默認的操做是什麼?
當應用程序接收到系統的內容警告時,就有可能調用控制器的didRece…Warning方法
它的默認作法是:
當控制器的view不在窗口上顯示時,就會直接銷燬,而且調用viewDidUnload方法
怎麼理解MVC,在Cocoa中MVC是怎麼實現的?
M:Model,模型,封裝數據
V:View,視圖界面,負責展現數據
C:Controller,控制器,負責提供數據(Model)給界面(View)
self.跟self->什麼區別?
self.是調用get方法或者set放
self是當前自己,是一個指向當前對象的指針
self->是直接訪問成員變量
id、nil表明什麼?
id類型的指針能夠指向任何OC對象
nil表明空值(空指針的值)
如何對iOS設備進行性能測試?
Timer Profile