URLSession慢慢整理

2021-07-11 12:12:55 字數 3740 閱讀 2708

缺省會話模式(default):工作模式類似於原來的nsurlconnection,使用的是基於磁碟快取的持久化策略,使用使用者keychain中儲存的證書進行認證授權。

瞬時會話模式(ephemeral):該模式不使用磁碟儲存任何資料。所有和會話相關的caches,證書,cookies等都被儲存在ram中,因此當程式使會話無效,這些快取的資料就會被自動清空。

+ (nsurlsessionconfiguration *)defaultsessionconfiguration;

+ (nsurlsessionconfiguration *)ephemeralsessionconfiguration;

+ (nsurlsessionconfiguration *)backgroundsessionconfigurationwithidentifier:(nsstring *)identifier;

在backgroundsessionconfiguration:方法中的identifier引數指定了會話的id,用於標記後台的session。

@property bool allowscellularaccess;

@property (getter=isdiscretionary) bool discretionary;

allowscellularaccess屬性指定是否允許使用蜂窩連線,discretionary屬性為yes時表示當程式在後台運作時由系統自己選擇最佳的網路連線配置,該屬性可以節省通過蜂窩連線的頻寬。在使用後台傳輸資料的時候,建議使用discretionary屬性,而不是allowscellularaccess屬性,因為它會把wifi和電源可用性考慮在內。

補充:這個標誌允許系統為分配任務進行效能優化。這意味著只有當裝置有足夠電量時,裝置才通過wifi進行資料傳輸。如果電量低,或者只僅有乙個蜂窩連線,傳輸任務是不會執行的。後台傳輸總是在discretionary模式下執行。

使用靜態的sharedsession方法,該類使用共享的會話,該會話使用全域性的cache,cookie和證書。

通過sessionwithconfiguration:方法建立物件,也就是建立對應配置的會話,與nsurlsessionconfiguration合作使用。

通過sessionwithconfiguration:delegate:delegatequeue方法建立物件,後兩種方式可以建立乙個新會話並定製其會話型別。

該方式中指定了session的委託和委託所處的佇列。當不再需要連線時,可以呼叫session的invalidateandcancel直接關閉,或者呼叫finishtasksandinvalidate等待當前task結束後關閉。這時delegate會收到urlsession:didbecomeinvalidwitherror:這個事件。delegate收到這個事件之後會被解引用。

注意:ios9新出類 nsurlsessionstreamtask建立物件很特殊,在nsurlsession中

/*nsurlsessiondatatask/

-(nsurlsessiondatatask *)datataskwithrequest:(nsurlrequest *)request;

-(nsurlsessiondatatask *)datataskwithurl:(nsurl *)url;

/*帶有結束block/

-(nsurlsessiondatatask *)datataskwithrequest:(nsurlrequest *)request completionhandler:(void (^)())completionhandler;

-(nsurlsessiondatatask *)datataskwithurl:(nsurl *)url completionhandler:(void (^)())completionhandler;

/*nsurlsessionuploadtask/

-(nsurlsessionuploadtask *)uploadtaskwithrequest:(nsurlrequest *)request fromfile:(nsurl *)fileurl;

-(nsurlsessionuploadtask *)uploadtaskwithrequest:(nsurlrequest *)request fromdata:(nsdata *)bodydata;

-(nsurlsessionuploadtask *)uploadtaskwithstreamedrequest:(nsurlrequest *)request;

/*帶有結束block/

-(nsurlsessionuploadtask *)uploadtaskwithrequest:(nsurlrequest *)request fromfile:(nsurl *)fileurl completionhandler:(void (^)())completionhandler;

-(nsurlsessionuploadtask *)uploadtaskwithrequest:(nsurlrequest *)request fromdata:(nullable nsdata *)bodydata completionhandler:(void (^)())completionhandler;

-/*nsurlsessiondownloadtask/

-(nsurlsessiondownloadtask *)downloadtaskwithrequest:(nsurlrequest *)request;

-(nsurlsessiondownloadtask *)downloadtaskwithurl:(nsurl *)url;

-(nsurlsessiondownloadtask *)downloadtaskwithresumedata:(nsdata *)resumedata;

/*帶有結束block/

-(nsurlsessiondownloadtask *)downloadtaskwithrequest:(nsurlrequest *)request completionhandler:(void (^)())completionhandler;

-(nsurlsessiondownloadtask *)downloadtaskwithurl:(nsurl *)url completionhandler:(void (^)())completionhandler;

-(nsurlsessiondownloadtask *)downloadtaskwithresumedata:(nsdata *)resumedata completionhandler:(void (^)())completionhandler;

urlsession簡單使用詳細介紹:

IOS9新特性慢慢整理

1.首字母不帶下滑線的修飾類名 eg.nullable 2.首字母帶乙個下劃線,則首字母大寫,修飾物件 eg.nullable 3.首字母帶兩個下劃線,則首字母小寫,修飾物件 eg.nullable 4.大多數一般只有第一種 作用 表示可以為空 nullable書寫規範 方式一 property n...

swift之URLSession的使用

urlsession是乙個可以響應傳送或者接受http請求的關鍵類,可以通過urlsessionconfiguration類新建urlsession例項。有以下三種方式 urlsessionconfiguration urlsessionconfiguration可以配置會話 session 屬性像...

Git慢慢整理吧,平時用到乙個整理乙個

1.檢視未提交的 git status 2.提交 git add git commit m 提交的注釋資訊,比如新增登入 git push orign master 如果你當前在分支,那git push orign v1.0.1,v1.0.0是分支名 3.將當前修改放置臨時區域 git stash,...