2014-06-05 36 views
0

是否可以使用NSInvocation進行靜態方法調用?靜態方法NSInvocation

我們使用NSInvocation來簡化我們在非公共方法的單元測試中的方法調用。

這對我們的實例方法非常有用,爲此我們爲NSInvocation提供了一個對象和適當的數據。但是,我們可以使用靜態方法嗎?

+1

有沒有「靜態方法」,在Objective- C。有「類方法」,它們在運行時動態調度,在編譯時沒有靜態查找。 – user102008

回答

1

是的,你可以。假設你的類是MyClass,你的方法是+(void)myClassMethod:(id)sender;,你可以使用:

NSMethodSignature *signature = [MyClass methodSignatureForSelector:@selector(myClassMethod:)]; 

然後創建的時候可以提供NSMethodSignatureNSInvocation

NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; 
+1

還要注意類方法的'target'應該是一個類對象。類似於'invocation.target = [MyClass class]'。 –