通訊相關基本概念


1.通訊的概念
服務器概念
硬件(刀片機,電腦)
軟件(服務器開發人員開發的軟件)
公司的服務器—內網測試服務器,外網正式服務器
端口:區分軟件服務器的
tcp/ip:ip32位,四個8位二進制組成
域名:可以註冊(ip地址不好記.所以有了域名)
dns:域名解析服務——較常用的dns服務器:谷歌,114,阿里


Http協議:
請求報文:
---請求行(請求方法,請求地址,http版本)
---請求頭(rang-數據範圍)
---空行
—請求體(圖片的數據)

響應報文:
---響應行(http版本,狀態:200,500,404)
—響應頭(數據的大小,服務器類型)
—響應數據


1,Get和Post請求方法
get:參數在url後面追加
post:參數在請求體裏面

2,相對安全性
post相對get更安全
參數的位置決定的安全性

3,數據的大小和長度
理論上說post沒有長度限制
而get有長度限制(url的長度有限制)

圖片上傳
UIImagePickerController
sourceType:資源類型
1,相機
2,相冊-默認相冊
3,圖片庫-很多相冊

數據的解析
服務器返回的數據類型:XML JSON
區別:
1,數據量
XML數據量大
JSON數據量小
2,易讀性
XML好讀
JSON不好讀
3,解析難度
XML解析複雜
JSON解析方便

XML解析:
使用NSXMLParser
1,創建解析器-設置代理-開始解析
2,開始標籤(屬性的解析)->結束標籤->獲得內容
JSON解析:
使用NSJSONSerialization
通過JSONObjectWithData:方法解析獲得解析到的字典



1,下載小文件數據放在數據緩存器NSData
2,下載大文件,使用NSFileHandle邊下載,邊寫入本地(使用seekToEndOfFile找到文件的末尾位置開始寫入)
3,斷點下載:
—1,告訴服務器需要的數據長度,通過設置請求頭Rang(bytes=(當前已經下載的數據長度)-( ),獲得從已經下載完畢的數據後面拿數據)
—2,保證程序已經關閉後,再啓動,還能繼續下載,從本地獲取文件的大小,
—3,如何計算實時下載進度,當前下載的文件長度/文件的總大小

ASIHttpRequest的使用
1,使用ASI發起Post請求,get請求
—get:ASIHTTPRequest
—post:ASIFormDataRequest
—使用addPostValue:(添加請求參數)
—使用addData:(上傳圖片,追加圖片data)
2,使用ASI做斷點下載
—1,設置親夠允許斷點下載
setAllowresumeForFileDownloads
—2,設置下載完成的最終地址,設置臨時文件的存放地址
—3,設置進度代理

網絡的判斷
Reachability
—1,創建一個reachability對象,設置需要檢測的服務器地址,開始檢測
—2,使用通知的方式來獲知網絡的變化,變化類型有三中:無線網絡,蜂窩網絡,沒有網絡

新浪OAuth2.0授權
—1,請求授權,web現實新浪的登錄界面,通過web的代理方法獲得code
—2,使用code發起獲得授權接口,獲得token
token就是登錄的憑證,他有有效期,再過期之前都可以拿token進行登錄,(不需要再輸入用戶名和密碼進行微博登錄了)
SSO授權
—1.再工程的info裏面添加URL schemes
—2,安裝新浪規定的方式WEB+appkey(新浪微博開放平臺的申請的appkey)

新浪微博的封裝
1,登錄界面
—1,顯示WEB
—2,獲得code
2,新浪引擎
—1,是否登錄
—2,token是否過期
—3,根據code獲得token—4,根據token獲得列表

3,主視圖ViewController

功能完善
1,動態計算Cell的高度
(boundingRectWithSize 根據內容計算高度) 
2,計算時間的間隔
—使用NSDateFormatter 格式化時間
—stringFromdate 得到格式化後的字符串dataFromString得到date對象
3,分頁下載(下啦,上啦,三方控件)
—列表的接口需要傳兩個參數
——count(每頁個數)
—— page(頁碼)
4,等待顯示框
MBProgressHUD
5,圖片加載三方空間
SDWebImage(通過類別)
6,類別
—1,直接給系統的類擴展方法
—2,不可以擴展屬性
—3,不建議重載系統的方法
擴展:用於添加私有屬性,變量和私有方法的


1,簡答的加密:
— MD5+Base64
— MD5不可逆
— Base64可以加密,也可以解密

Block(塊對象,oc特殊的對象)閉包
1,block的語法
////*********************************************///
有返回值,有參數
聲明:int(^intBlock)(int a)=int
賦值:intBlock = ^(int a)
     {
          return a+10;
     }
調用:intBlock(8);
////*********************************************///
2,兩個界面間數據的傳遞
:::A界面:給Block進行賦值
:::B幾面:定義一個Block屬性,copy來修飾
:::調用Block

3,Block引用外部變量,Block的內存管理
—1,Block內部引用外部變量兩種,
—— 1,局部變量          引用局部的變量值
—— 需要添加__Block關鍵字修飾,達到引用指針的目的
—2,全局變量,實例變量,靜態變量,成員變量
引用變量的本身的指針
—3,block內存管理
—— 1,block創建再棧中,我們使用需要copy到堆
——2,block被copy時,內部變量引用級數的變化
////*********************************************///
局部變量:變量本身 retain
實例變量:變量的對象 retain(self會被retain)
全局變量:不會改變
////*********************************************///
——3,循環引用(造成內存泄露)
:::A引用B,B引用A,導致A和B都釋放不掉
:::對於Block來說:
:::—1,self中有copy修飾的Block,(self引用了Block)
:::—2,block內部引用了self的實例變量,這樣block被copy時會對self進行retain;(Block引用了self)
—— 4,解決辦法:弱引用
:::使用__block+臨時變量來解決;

4,block再系統API中的使用
—1,動畫
—2,模態彈出
—3,數組變量
—4,數組排序—升序降序

多線程技術
1,NSThread
—1,最輕量級的,自己創建線程,自己管理____蘋果不推薦使用
—2,創建方式三種
——1,直接alloc
——2,performSelectorInbackground
——3,detacheNewThread
—3,線程安全
:::對線程同時訪問一個資源,需要添加線程鎖
:::NSLock:同步 @synchronized 方式加鎖

2.NSOperation
:::它是一個抽象類,不可以拿來直接使用,必須使用它的子類
使用方式有三中:
——1,NSInvocationOperation
——2,NSBlockOperation
——3,自定義Operation
:::重寫main函數,___(寫操作代碼)
Operation可以添加依賴關係
Operation可以自己start,但是自己start不會創建線程
Operation可以cancel取消
Operation添加到OperationQueue中會自動執行
OperationQueue可以設置併發量
:::默認-1,沒有限制

3,GCD
:::系統通過的隊列2個
—1,mainQueue___串行隊列
—2,globalQueue___並行隊列

自己創建___(串行/並行)
:::creatQueue
往隊列中添加任務的方式有兩種:
—1,同步添加
—2,異步添加
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章