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的同步問題。

delegate為什么用weak修飾?

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