Objective C中 encode的使用

2023-02-07 20:45:58 字數 1687 閱讀 5092

今天看mansonry的**時,碰到一個生僻的關鍵字(也許只是自己沒用過)。:-)

@encode  => 將給定型別編碼為內部表示的字串。

為了方便自己查閱,順便也寫個小例子,貼在這裡,實踐出真知嘛。

nslog(@"uiviewcontroller : %s", @encode(uiviewcontroller));

nslog(@"cgrect : %s", @encode(cgrect));

nslog(@"int : %s", @encode(int));

nslog(@"float : %s", @encode(float));

nslog(@"double : %s", @encode(double));

nslog(@"bool : %s", @encode(bool));

nslog(@"long : %s", @encode(long));

nslog(@"short : %s", @encode(short));

nsdictionary *numberdic = @

2016-11-04 16:18:56.316 test[10003:251554] cgrect : }

2016-11-04 16:18:56.316 test[10003:251554] int : i

2016-11-04 16:18:56.316 test[10003:251554] float : f

2016-11-04 16:18:56.316 test[10003:251554] double : d

2016-11-04 16:18:56.317 test[10003:251554] bool : b

2016-11-04 16:18:56.317 test[10003:251554] long : q

2016-11-04 16:18:56.317 test[10003:251554] short : s

2016-11-04 16:18:57.268 test[10003:251554] double : 1

2016-11-04 16:18:57.268 test[10003:251554] float : 2

2016-11-04 16:18:57.268 test[10003:251554] int : 2

2016-11-04 16:18:57.268 test[10003:251554] long : 2

2016-11-04 16:18:57.269 test[10003:251554] short : 2

從上我們看出 int 被編碼為 i;float為f;等等。

這裡遇到一個問題: [nsnumber numberwithbool:yes] 在呼叫 objctype 方法時,返回的是"c", 而不是"b", 所以下面的if判斷並沒有列印bool相關的輸出。 針對這個問題,我做了查詢,"b"表示的是一個c++ bool,ojbective-c中bool確切的說是singned char, 所以呼叫objctype時返回的是"c"。

cjson中的稀疏陣列encode

經過反饋發現伺服器報了個錯 cannot serialise table excessively sparse array lua中的cjson擴充套件一直是比較好用的json處理擴充套件,但是在處理數字索引時對於索引下標不連續的悉數陣列確有一些特殊的處理方式。在預設情況下只要不連續的數量少於10就...

Objective c中Category的用法

1 類目 category 的基本概念 封裝是物件導向的一個特徵,oc也不例外,但是有的時候我們會碰到一種情況,比如我們封裝了一個類,不想再動它了,但是我們又需要在那個類中增加一個方法,這時候我們就不必在那個類中做修改或者再定義一個它的子類,只需要新增一個類目 category 即可。1 在類目中定...

objective c中nonatomic的作用

它要與 synthesize一起使用才有意義。atomic的意思就是setter getter這個函式是一個原語操作。如果有多個執行緒同時呼叫setter的話,不會出現某一個執行緒執行setter全部語句之前,另一個執行緒開始執行setter情況,相當於函式頭尾加了鎖一樣。nonatomic不保證s...