iOS開發之OC篇(8) NSData

2021-07-27 05:50:03 字數 3008 閱讀 3340

#版本

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也會收到呼叫,但...