裝箱:
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...