iOS基础知识点总结
1.內存分區情況:
a.代碼區:存放函數二進制代碼;
b.數據區:系統運行時申請內存并初始化,系統退出時由系統釋放,主要存放常量,靜態變量,全局變量;
c.堆區:通過malloc等函數或者new動態申請到的,需要程序員手動申請和釋放;
d.棧區:函數模塊內申請,函數結束時由系統自動釋放。存放局部變量,函數參數。
?
2.隊列和棧的區別:
隊列和棧是兩種不同的數據容器,從數據結構的角度來說都是線性結構的,區別在于隊列是一種先進先出的數據結構,在隊列的兩端都可以進行數據的操作,一端進行入隊列操作,另一端進行出隊列操作,而對于棧來說,棧是先進后出的方式,而且只能在棧頂進行數據的操作。
?
3.http協議中post和get請求的區別
post請求:
a.提交的參數包含在消息主體內,外界看不到請求數據;
b.提交的數據大小沒有限制;
c.可以設置書簽
get請求:
a.提交的參數不包含在消息體內,數據放在請求行
b.提交的數據大小有限制
c.不可以設置書簽
?
4.Quartz 2D的繪圖功能的三個核心概念
上下文:主要用于描述圖形寫入哪里
路徑:是在圖層上繪制的內容
狀態:用于保存配置變化的值,填充和輪廓
?
5.Objective-c里面的NSInteger和int的區別
NSInteger是基本數據類型對象,不是NSNumber的子類,也不是NSObject的子類。NSInteger是int或者long的別名,區別在于NSInteger會根據系統是32位還是64位來決定本身是int還是long
?
6.Objective-c中創建線程的方法有哪些?在主線程中執行代碼的方法是什么?延時執行代碼的方法是什么?
創建線程的方法主要有三種:使用NSThread創建,使用GCD的dispatch創建,使用子類化的NSOperation,然后將其加入到NSOperarionQueue中。在主線程執行代碼,方法是performSelectorOnMainThread,如果想延時執行代碼可以用performSelector:onThread:withObject:waitUntilDone:
?
7.類別,類擴展和繼承的比較
類別只能添加方法,不能添加屬性,類擴展和繼承可以添加屬性,繼承可以刪除,修改方法,類比不能,類擴展添加的方法必須要實現,類擴展類似私有的類別
?
8.UIView和UIWindow,CALayer的聯系和區別
UIView是視圖基類,UIViewController是視圖控制器基類,UIResponder是可以用來表示一個可以在屏幕上響應觸摸事件的對象。
UIWindow是UIView的子類,主要有兩個作用,一是提供一個區域用來顯示UIView,二是用來分發事件,一個應用基本上只有一個UIWindow。
CALayer和UIView的區別:
CALayer是繼承自NSObject,而UIView的繼承結構是UIResponder:NSObject,從兩者的繼承結構可以看出,UIView可以響應觸摸事件,而CALayer是不能響應觸摸事件的,兩者所屬框架也不同,UIView來自UIKit框架,CALayer來自QuartzCore框架,CALayer的坐標系統多了一個anchorPoint的屬性。
?
9.__block和__weak的區別
__block不管是在ARC還是MRC下都可以使用,可以修飾對象,也可以用來修飾基本數據類型
__weak只能在ARC模式下使用,只能修飾對象,不能修飾基本數據類型
__block對象可以在block中重新賦值,__weak不可以
?
10.常見的http狀態碼有哪些
http狀態碼:302代表請求重定向,500以上是服務器錯誤,400以上是地址錯誤或者找不到服務器,200以上是正確,100以上是請求接受成功。
?
11.static關鍵字的作用
函數體內的static變量的作用范圍為該函數體,該變量的內存只被分配一次,其值在下次調用時還是維持上一次的值
類中的static成員變量屬于整個類所擁有,對類的所有對象只有一份拷貝
類中的static成員函數屬于整個類所擁有,這個函數不接收this指針,所以只能訪問類的static成員變量
?
12.堆和棧的區別
管理方式上,棧是由編譯器自己去管理,堆是由程序員去管理。
申請大小上,棧是向低地址擴展的數據結構,是一塊連續的內存區域,棧頂的地址和棧的最大容量是系統預先規定好的,能從獲得的空間較小;堆是向高地址擴展的數據結構,是不連續的內存區域。用的是鏈表的方式進行存儲,堆的大小受限于系統中有效的虛擬內存的大小,堆獲得的空間比較靈活,也比較大。
碎片問題上,堆會頻繁的申請,釋放,而且不是連續的,容易造成大量的碎片,對于棧來講,就不會造成碎片空間,因為站是先進后出,是連續的內存區域
分配效率上,棧是由編譯器管理,分配效率更高一點。
轉載于:https://www.cnblogs.com/qirutr/p/5150089.html
總結
以上是生活随笔為你收集整理的iOS基础知识点总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nancy 学习-视图引擎 继续跨平台
- 下一篇: 我已经写了48年代码了,我感觉我还能写下