HTTP的請求方式:
GET婚被、POST狡忙、PUT、DELETE摔寨、HEAD去枷、OPTIONS
常見狀態(tài):
200 OK:請求成功,信息在返回的響應報文中
301 Moved Permanently:請求的對象已經被永久轉移了是复,新的URL定義在響應報文中的Location:首部行中删顶。客戶軟件將自動獲取新的URL
400 Bad Request:一個通用差錯代碼淑廊,指示該請求不能被服務器理解
404 Not Found:被請求的文件不在服務器上
505 HTTP Version Not Supported:服務器不支持請求報文使用的HTTP協(xié)議版本
<4開頭的狀態(tài)碼通常是客戶端的問題逗余,5開頭的則通常是服務端的問題>
Swift的訪問范圍:
1.internal :內部的
1.1 當不指定具體的訪問權限時,默認為internal
1.2 internal的訪問權限: 在當前項目(包)的任何地方都能訪問
2.private : 私有的
private的訪問權限: 在當前源文件中能夠訪問 一個 .swift文件就是一個源文件
3.public :公共的
3.1 public的訪問權限 : 可以跨包訪問
3.2 包的概念: 就是一個項目或一個框架 UIKit也是一個框架
微信支付流程:
1.請求服務器api生成訂單號 2.調支付sdk 3.支付回調里刷服務器的api獲取該訂單狀態(tài)。
那為什么runtime允許動態(tài)添加方法和屬性季惩,而不會引發(fā)問題呢录粱?
因為方法和屬性并不“屬于”類實例,而成員變量“屬于”類實例画拾。我們所說的“類實例”概念啥繁,指的是一塊內存區(qū)域,包含了isa指針和所有的成員變量青抛。所以假如允許動態(tài)修改類成員變量布局旗闽,已經創(chuàng)建出的類實例就不符合類定義了,變成了無效對象。但方法定義是在objc_class中管理的适室,不管如何增刪類方法嫡意,都不影響類實例的內存布局,已經創(chuàng)建出的類實例仍然可正常使用捣辆。
那么由此分類的作用與局限便清晰了蔬螟,以下做個總結。
作用:
1.分類可以在不獲悉汽畴,不改變原來代碼的情況下往里面添加新的方法旧巾,但不能添加實例變量
2.如果分類和原來類中的方法產生名稱沖突,則分類將覆蓋原來的方法整袁,因為分類具有更高的優(yōu)先級
block用什么修飾菠齿? 能不能用strong佑吝? retain呢坐昙?
retain在MRC環(huán)境下是還是在棧區(qū)的,會有問題 strong芋忿,retain炸客,copy在arc情況下都會被默認從棧區(qū)拷貝到堆區(qū)。所以strong也沒問題戈钢,retain在mrc下有問題痹仙。
緩存分為內存緩存和磁盤緩存兩種?有啥區(qū)別殉了?
其中內存是指當前程序的運行空間开仰,緩存速度快容量小,是臨時存儲文件用的薪铜,供CPU直接讀取众弓,比如說打開一個程序,他是在內存中存儲,關閉程序后內存就又回到原來的空閑空間;磁盤是程序的存儲空間隔箍,緩存容量大速度慢可持久化與內存不同的是磁盤是永久存儲東西的谓娃,只要里面存放東西,不管運行不運行 ,他都占用空間蜒滩!磁盤緩存是存在Library/Caches
iOS內存分為5個區(qū):棧區(qū)滨达,堆區(qū),全局區(qū)俯艰,常量區(qū)捡遍,代碼區(qū)
棧區(qū)stack:
這一塊區(qū)域系統(tǒng)會自己管理,我們不用干預竹握,主要存一些局部變量画株,以及函數跳轉時的現場保護。因此大量的局部變量,深遞歸,函數循環(huán)調用都可能導致內存耗盡而運行崩潰污秆。
堆區(qū)heap:
與棧區(qū)相對劈猪,這一塊一般由我們自己管理,比如alloc良拼,free的操作战得,存儲一些自己創(chuàng)建的對象。
全局區(qū)(靜態(tài)區(qū)static):
全局變量和靜態(tài)變量都存儲在這里庸推,已經初始化的和沒有初始化的會分開存儲在相鄰的區(qū)域常侦,程序結束后系統(tǒng)會釋放
常量區(qū):
存儲常量字符串和const常量
代碼區(qū):
存儲代碼
默認情況下,每個沙盒含有3個文件夾:Documents, Library 和 tmp贬媒。
Documents:蘋果建議將程序中建立的或在程序中瀏覽到的文件數據保存在該目錄下聋亡,iTunes備份和恢復的時候會包括此目錄
Library:存儲程序的默認設置或其它狀態(tài)信息;
Library/Caches:存放緩存文件际乘,iTunes不會備份此目錄坡倔,此目錄下文件不會在應用退出刪除.
Library/preferences: 存放的是 user default 存儲的信息,iTunes會備份此目錄脖含, 應用程序重新啟動不會丟棄數據罪塔,我們使用 NSUserDefaults寫的設置數據都會保存到該目錄下的一個plist文件中,這就是所謂的寫到plist中养葵!
tmp:提供一個即時創(chuàng)建臨時文件的地方征堪, iTunes不會備份此目錄
用戶生成的文件放在documents,自己的文件放在library/cache里面关拒,簡單的說明:如果你做個記事本的app佃蚜,那么用戶寫了東西,總要把東西存起來着绊。那么這個文件則是用戶自行生成的谐算,就放在documents文件夾里面。如果你有一個app畔柔,需要和服務器配合氯夷,經常從服務器下載東西,展示給用戶看靶擦。那么這些下載下來的東西就放在library/cache腮考。apple對這個很嚴格,放錯了就會被拒玄捕。主要原因是ios的icloud的同步問題踩蔚。
delegate為什么用weak修飾?
如上圖所示枚粘,根視圖強引用著控制器馅闽,控制器強引用著view,view強引用delegate,如果delegate用strong修飾福也,那么delegate就是強引用控制器局骤,會造成三者的強引用,當根視圖釋放控制器時暴凑,由于delegate強引用著控制器峦甩,控制器并不會被釋放。如果delegate用weak修飾现喳,控制器就會釋放凯傲。