#版本
xcode 8.2.1
nsdata為二進位制資料,在檔案操作(如儲存到本地)、網路、以及核心圖形影象中使用較廣泛。
#nsdata的建立
鑑於已經有人總結了,這裡偷懶引用一下:
//物件方法建立
nsdata *data1 = [[nsdata alloc] init];
nsdata *data2 = [[nsdata alloc] initwithdata:data1];
//類方法建立
nsdata *data3 = [nsdata data];
nsdata *data4 = [nsdata datawithdata:data3];
//由檔案建立
nsdata *data5 = [[nsdata alloc] initwithcontentsoffile:filepath];
nsdata *data6 = [nsdata datawithcontentsoffile:filepath];
// 由 url 建立
nsdata *data7 = [[nsdata alloc] initwithcontentsofurl:urlpath];
nsdata *data8 = [nsdata datawithcontentsofurl:urlpath];
// 由 字串 建立
nsstring *string = @"bei jing nin hao";
nsdata *data9 = [string datausingencoding:nsutf8stringencoding];
nsdata *data10 = [string datausingencoding:nsutf8stringencoding allowlossyconversion:yes];
// 可變 nsdata 的建立
// 初始化時指定物件擁有的位元組空間大小,在需要時會增加記憶體空間,在初始化時並沒有分配記憶體空間
nsmutabledata *data11 = [[nsmutabledata alloc] initwithcapacity:5];
nsmutabledata *data12 = [nsmutabledata datawithcapacity:5];
// 初始化時為物件分配指定長度的歸零位元組
nsmutabledata *data13 = [[nsmutabledata alloc] initwithlength:10];
nsmutabledata *data14 = [nsmutabledata datawithlength:10];
#nsdata與nsstring、byte、uiimage之間的轉換
//nsstring 轉換成 nsdata
nsstring *str = @"hello";
nsdata *strdata = [str datausingencoding:nsutf8stringencoding];
//nsdata 轉換成 nsstring
nsstring *str1 = [[nsstring alloc]initwithdata:strdata encoding:nsutf8stringencoding];
//byte 轉換成 nsdata
byte byte = ;
nsdata *bytedata = [[nsdata alloc] initwithbytes:byte length:10];
//nsdata 轉換成 byte
byte *testbyte = (byte *)[bytedata bytes];
//uiimage 轉換成 nsdata
nsdata *imagedata1 = uiimagepngrepresentation(uiimage *image); //png 格式
nsdata *imagedata2 = uiimagejpegrepresentation(uiimage *image, cgfloat compressionquality) //jpeg格式
//nsdata 轉換成 uiimage
uiimage *aimage = [uiimage imagewithdata: imagedata];
#nsmutabledata刪除部分資料
實驗
byte byte = ;
nsmutabledata *datam = [[nsmutabledata alloc] initwithbytes:byte length:5];
nslog(@"原資料 length:%d, datam:%@", (int)datam.length, datam);
[datam resetbytesinrange:nsmakerange(0, 3)]; // 替換成0, 長度不變
nslog(@"reset操作 length:%d, datam:%@", (int)datam.length, datam);
[datam replacebytesinrange:nsmakerange(0, 2) withbytes:null length:0]; // 長度改變, 真正刪除
nslog(@"replace操作 length:%d, datam:%@", (int)datam.length, datam);刪除
nslog(@"replace操作 length:%d, datam:%@", (int)datam.length, datam);
log:
原資料 length:5, datam:
reset操作 length:5, datam:
replace操作 length:3, datam:
結論:
// nsmutabledata刪除部分資料
[datam replacebytesinrange:nsmakerange(0, 2) withbytes:null length:0];
IOS開發學習 OC篇
一 instancetype和id關鍵字的區別 1 instancetype表示方法的返回型別和呼叫方法的物件型別相同。2 在object c引入instancetype之前,初始化方法的返回型別都是id,id的定義是 指向任意物件的指標 相當於c語言中的void 它們的區別是 instancety...
iOS開發之OC篇(9) NSURL
xcode 8.2.1 當然也會搜尋到很多關於nsurl的部落格,包括介紹和用法等等。但如果我們還不放心,不確定他們寫的是否完全準確,怎麼辦?來,開啟xcode新建乙個nsurl工程,我們來看看官方文件怎麼說。通過以上方法,我們得到蘋果的官方文件如此描述 好了好了,了解得差不多了,下面我們來總結一下...
iOS開發 OC篇 單例模式
回顧一下load和initialize方法,有幾點需要注意。load方法和initialize方法分析 1 load方法 1 當類被引用程序式的時候會執行這個函式 2 乙個類的load方法不用寫明 super load 父類就會收到呼叫,並且在子類之前。3 category的load也會收到呼叫,但...