oc學習之Foundation框架 裝箱和拆箱

2021-07-17 00:17:32 字數 2144 閱讀 3237

裝箱:

boxing,指的是將基本資料型別轉為oc物件

拆箱:unboxing,指的是將oc物件轉為基本資料型別

在這裡我們要用到兩個類--nsvalue和nsnumber

nsvalue:適用於結構體型別的變數與oc物件的轉換。

nsnumber:適用於除了結構體變數之外的基本資料型別與oc物件之間的轉換。

// nsvalue

//系統自帶的結構體,以cgpoint為例 //

建立乙個結構體的變數(基本資料型別)

cgpoint

point =

cgpointmake

(100

, 100

);//

裝箱nsvalue

*pointvalue = [

nsvalue

valuewithpoint

:point];

nslog

(@"%@"

,pointvalue);

//拆箱

cgpoint

point2 = [pointvalue

pointvalue

];nslog(@"

拆箱:x=%.1f

,y=%.1f"

,point2.

x,point2.y);

//自定義的結構體

typedef

struct

jrdate;

//建立乙個物件

jrdate

date1 = ;

//獲取自定義的結構體型別的字串

@encode

:編碼decode

:解碼

char

*type =

@encode

(jrdate);

//裝箱:引數1引數

2:表示型別的字串

nsvalue

*datevalue =[

nsvalue

value

:&date1

withobjctype

:type];

nslog

(@"datevalue:%@"

,datevalue);

//列印出來是二進位制的

//拆箱: //

宣告乙個結構變數,用於儲存拆箱之後的結果

jrdate

date2; //

[datevalue

getvalue

:&date2];

nslog

(@"date2

:%lu

年%lu

月%lu日"

,date2.

year

,date2.

month

,date2.

day);

//

nsnumber

//裝箱,以int float為例        

nsnumber

*number1 = [[

nsnumber

alloc

] initwithint:1

]; nsnumber

*number2 = [

nsnumber

numberwithint:1

]; nsnumber

*number3 = [

nsnumber

numberwithfloat

:1.0];

//拆箱

intnum1 = [number1

intvalue];

intnum2 = [number2 

intvalue];

float

num3 = [number3

floatvalue];

//快速裝箱

利用@()

nsnumber

*num1_1 =

@10;

nsnumber

*num1_2 =

@(10+2)

; float

tnum =

10.0;

nsnumber

*num1_3 =

@(tnum);

OC學習 Foundation框架之常用結構體

在ios開發中所有框架中foundation框架是最基礎的框架,foundation框架裡面包含了常用的類和資料型別。使用foundation框架只要包含它的主標頭檔案即可,主標頭檔案裡面包含了框架中所有內容的標頭檔案。foundation框架中常用的結構體 nsrange nspoint cgpo...

OC之Foundation結構體

一 foundation簡介 foundation 基礎框架。框架中包含了很多開發中常用的資料型別,如結構體,列舉,類等,是其他ios框架的基礎。如果要想使用foundation框架中的資料型別,那麼包含它的主標頭檔案就可以了。即 import 補充 core foundation框架相對底層,裡面...

黑馬程式猿 OC之Foundation簡括

1.nsnumber 這是乙個建立oc數字物件的類 建立物件的方法 nsnumber numberwithint int value nsnumber numberwithdouble double value nsnumber numberwithbool bool value 從nsnumber...