面試

HTTP的請求方式:

GET、POST、PUT、DELETE、HEAD、OPTIONS

常見狀態(tài):

200 OK:請求成功,信息在返回的響應(yīng)報文中

301 Moved Permanently:請求的對象已經(jīng)被永久轉(zhuǎn)移了,新的URL定義在響應(yīng)報文中的Location:首部行中??蛻糗浖⒆詣荧@取新的URL

400 Bad Request:一個通用差錯代碼,指示該請求不能被服務(wù)器理解

404 Not Found:被請求的文件不在服務(wù)器上

505 HTTP Version Not Supported:服務(wù)器不支持請求報文使用的HTTP協(xié)議版本
<4開頭的狀態(tài)碼通常是客戶端的問題,5開頭的則通常是服務(wù)端的問題>

Swift的訪問范圍:

1.internal :內(nèi)部的

 1.1 當(dāng)不指定具體的訪問權(quán)限時,默認(rèn)為internal
 1.2 internal的訪問權(quán)限: 在當(dāng)前項目(包)的任何地方都能訪問

2.private : 私有的

 private的訪問權(quán)限: 在當(dāng)前源文件中能夠訪問    一個 .swift文件就是一個源文件

3.public :公共的

 3.1 public的訪問權(quán)限 : 可以跨包訪問
 3.2 包的概念: 就是一個項目或一個框架   UIKit也是一個框架

微信支付流程:

1.請求服務(wù)器api生成訂單號 2.調(diào)支付sdk 3.支付回調(diào)里刷服務(wù)器的api獲取該訂單狀態(tài)。

那為什么runtime允許動態(tài)添加方法和屬性,而不會引發(fā)問題呢?

因為方法和屬性并不“屬于”類實例,而成員變量“屬于”類實例。我們所說的“類實例”概念,指的是一塊內(nèi)存區(qū)域,包含了isa指針和所有的成員變量。所以假如允許動態(tài)修改類成員變量布局,已經(jīng)創(chuàng)建出的類實例就不符合類定義了,變成了無效對象。但方法定義是在objc_class中管理的,不管如何增刪類方法,都不影響類實例的內(nèi)存布局,已經(jīng)創(chuàng)建出的類實例仍然可正常使用。
那么由此分類的作用與局限便清晰了,以下做個總結(jié)。
作用:
1.分類可以在不獲悉,不改變原來代碼的情況下往里面添加新的方法,但不能添加實例變量
2.如果分類和原來類中的方法產(chǎn)生名稱沖突,則分類將覆蓋原來的方法,因為分類具有更高的優(yōu)先級

block用什么修飾? 能不能用strong? retain呢?

retain在MRC環(huán)境下是還是在棧區(qū)的,會有問題 strong,retain,copy在arc情況下都會被默認(rèn)從棧區(qū)拷貝到堆區(qū)。所以strong也沒問題,retain在mrc下有問題。

緩存分為內(nèi)存緩存和磁盤緩存兩種?有啥區(qū)別?

其中內(nèi)存是指當(dāng)前程序的運行空間,緩存速度快容量小,是臨時存儲文件用的,供CPU直接讀取,比如說打開一個程序,他是在內(nèi)存中存儲,關(guān)閉程序后內(nèi)存就又回到原來的空閑空間;磁盤是程序的存儲空間,緩存容量大速度慢可持久化與內(nèi)存不同的是磁盤是永久存儲東西的,只要里面存放東西,不管運行不運行 ,他都占用空間!磁盤緩存是存在Library/Caches

iOS內(nèi)存分為5個區(qū):棧區(qū),堆區(qū),全局區(qū),常量區(qū),代碼區(qū)

棧區(qū)stack:

這一塊區(qū)域系統(tǒng)會自己管理,我們不用干預(yù),主要存一些局部變量,以及函數(shù)跳轉(zhuǎn)時的現(xiàn)場保護。因此大量的局部變量,深遞歸,函數(shù)循環(huán)調(diào)用都可能導(dǎo)致內(nèi)存耗盡而運行崩潰。

堆區(qū)heap:

與棧區(qū)相對,這一塊一般由我們自己管理,比如alloc,free的操作,存儲一些自己創(chuàng)建的對象。

全局區(qū)(靜態(tài)區(qū)static):

全局變量和靜態(tài)變量都存儲在這里,已經(jīng)初始化的和沒有初始化的會分開存儲在相鄰的區(qū)域,程序結(jié)束后系統(tǒng)會釋放

常量區(qū):

存儲常量字符串和const常量

代碼區(qū):

存儲代碼

默認(rèn)情況下,每個沙盒含有3個文件夾:Documents, Library 和 tmp。
Documents:蘋果建議將程序中建立的或在程序中瀏覽到的文件數(shù)據(jù)保存在該目錄下,iTunes備份和恢復(fù)的時候會包括此目錄
Library:存儲程序的默認(rèn)設(shè)置或其它狀態(tài)信息;
Library/Caches:存放緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應(yīng)用退出刪除.
Library/preferences: 存放的是 user default 存儲的信息,iTunes會備份此目錄, 應(yīng)用程序重新啟動不會丟棄數(shù)據(jù),我們使用 NSUserDefaults寫的設(shè)置數(shù)據(jù)都會保存到該目錄下的一個plist文件中,這就是所謂的寫到plist中!
tmp:提供一個即時創(chuàng)建臨時文件的地方, iTunes不會備份此目錄
用戶生成的文件放在documents,自己的文件放在library/cache里面,簡單的說明:如果你做個記事本的app,那么用戶寫了東西,總要把東西存起來。那么這個文件則是用戶自行生成的,就放在documents文件夾里面。如果你有一個app,需要和服務(wù)器配合,經(jīng)常從服務(wù)器下載東西,展示給用戶看。那么這些下載下來的東西就放在library/cache。apple對這個很嚴(yán)格,放錯了就會被拒。主要原因是ios的icloud的同步問題。


無標(biāo)題.png

delegate為什么用weak修飾?

無標(biāo)題.png

如上圖所示,根視圖強引用著控制器,控制器強引用著view,view強引用delegate,如果delegate用strong修飾,那么delegate就是強引用控制器,會造成三者的強引用,當(dāng)根視圖釋放控制器時,由于delegate強引用著控制器,控制器并不會被釋放。如果delegate用weak修飾,控制器就會釋放。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容