1> OC是單繼承,沒有多繼承函數
2> 有時能夠用分類category和協議protocol來代替多繼承性能
1> OC沒有相似@private的修飾詞來修飾方法,只要寫在.h文件中,就是公共方法測試
2> 可使用類擴展(Extension)/繼承來增長私有方法和私有變量spa
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 是一個指向常整型數的常指針(指針指向的整型數是不可修改的,同時指針也是不可修改的)
1> static修飾的函數是一個內部函數,只能在本文件中調用,其餘文件不能調用
2> static修飾的所有變量是一個內部變量,只能在本文件中使用,其餘文件不能使用
3> static修飾的局部變量只會初始化一次,而且在程序退出時纔會回收內存
1> 一個應用程序對應一個進程,一個進程幫助程序佔據一塊存儲空間
2> 要想在進程中執行任務,就必須開啓線程,一條線程就表明一個任務
3> 一個進程中容許開啓多條線程,也就是同時執行多個任務
1> 堆空間的內存是動態分配的,通常存放對象,而且須要手動釋放內存
2> 棧空間的內存由系統自動分配,通常存放局部變量等,不須要手動管理內存
1> tableView的代理通常都是它所屬的控制器,控制器會對它內部的view作一次retain操做
2> 假設tableView也對代理(控制器)作一次retain操做,那麼就出現循環retain問題
3> 循環問題有什麼後果?
1> copy:NSString、Block等類型
2> assign:非OC對象類型, 基本數據類型(兩個對象相互引用的時候,一端用retain, 一端用assign)
3> retain:OC對象類型
每一個對象都有一個引用計數器,每一個新對象的計數器是1,當對象的計數器減爲0時,就會被銷燬
1> loadView
2> viewDidLoad
3> viewDidUnload
l 當控制器的view不在窗口上顯示時,就會直接銷燬,而且調用viewDidUnload方法
1> M:Model,模型,封裝數據
2> V:View,視圖界面,負責展現數據
3> C:Controller,控制器,負責提供數據(Model)給界面(View)
1> self.是調用get方法或者set方法
2> self是當前自己,是一個指向當前對象的指針
3> self->是直接訪問成員變量
1> id類型的指針能夠指向任何OC對象
2> nil表明空值(空指針的值, 0)
Profile-> Instruments ->Time Profiler