引入#import
selsel =@selector(methodsignature:);
method signm = class_getclassmethod([uiview class], sel);
constchar* s = method_gettypeencoding(signm);
nslog(@"%s",s);
oc 方法簽名規則:(v|@)a@0:8(@ | ^v | @? | ^i)b(@ | ^v | @? | ^i)c以此類推
其中v標識void @標識基本型別和物件型別
@0:8 是固定部分,將左右分開,左邊是返回型別簽名(@0為返回的標誌) 右邊是引數型別簽名(:8為sel方法的標誌)
^為指標型別,例如^v為void指標型別 ^i為int指標型別
@?是閉包型別
關於a,b,c的說明,a為返回值 b為引數1,c為引數2 以此類推n個引數,a的數值為8+1*8,b為8+2*8
後面以此類推為8+n*8 。最後a的值為8+(n + 1) * 8
舉例 v40@0:8@?16^v24@32 此簽名為返回值為空,引數一為閉包 引數二為void指標型別 引數三為基本型別或物件型別
詳細引數型別如下:
// 型別編碼列舉
enum _nsobjcvaluetype
Objective C,關於動態引數方法
ios開發中有時需要給方法傳入不定個數的引數,即動態引數繫結,編寫動態引數方法之前,有幾個c語言函式需要了解一下 va list 宣告乙個指向動態引數列表的指標 va start param,test 獲得引數位址,即讓 param 指向test va arg param,id 指向動態引數列表的下...
Objective C構造方法
構造方法 用來初始化的方法 之前我們建立物件的方式一直是使用 new 但是使用new建立的物件,都是給我們預設做了初始化的。有的時候,我們需要按照我們自己的需求進行初始化,那麼怎麼做呢 首先了解一下,我們使用new建立物件的時候,都做了什麼事情。分配儲存空間 alloc 呼叫類方法alloc來給物件...
Objective c 方法的呼叫
在書寫了類的宣告和實現後,應用程式如何去呼叫它呢?在objective c中,呼叫方法的簡單格式如下 1 例項 方法 如 person setage 32 其中 person是person類的例項。或者是 2 類名 方法名 如 nsstring str nsdate date 這是直接呼叫類nsda...