iOS基礎知識點總結

來源:互聯網
上載者:User

標籤:

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是基礎資料型別 (Elementary Data Type)對象,不是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下都可以使用,可以修飾對象,也可以用來修飾基礎資料型別 (Elementary Data Type)

__weak只能在ARC模式下使用,只能修飾對象,不能修飾基礎資料型別 (Elementary Data Type)

__block對象可以在block中重新賦值,__weak不可以

 

10.常見的http狀態代碼有哪些

http狀態代碼:302代表請求重新導向,500以上是伺服器錯誤,400以上是地址錯誤或者找不到伺服器,200以上是正確,100以上是請求接受成功。

 

11.static關鍵字的作用

函數體內的static變數的作用範圍為該函數體,該變數的記憶體只被分配一次,其值在下次調用時還是維持上一次的值

類中的static成員變數屬於整個類所擁有,對類的所有對象只有一份拷貝

類中的static成員函數屬於整個類所擁有,這個函數不接收this指標,所以只能訪問類的static成員變數

 

12.堆和棧的區別

管理方式上,棧是由編譯器自己去管理,堆是由程式員去管理。

申請大小上,棧是向低地址擴充的資料結構,是一塊連續的記憶體地區,棧頂的地址和棧的最大容量是系統預先規定好的,能從獲得的空間較小;堆是向高地址擴充的資料結構,是不連續的記憶體地區。用的是鏈表的方式進行儲存,堆的大小受限於系統中有效虛擬記憶體的大小,堆獲得的空間比較靈活,也比較大。

片段問題上,堆會頻繁的申請,釋放,而且不是連續的,容易造成大量的片段,對於棧來講,就不會造成片段空間,因為站是先進後出,是連續的記憶體地區

分配效率上,棧是由編譯器管理,分配效率更高一點。

iOS基礎知識點總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.