[英]How to create an NSInvocation from a called method implementation?
我有一個看起來像這樣的函數:
void myMethodImpl(id self, SEL _cmd, ...)
我使用它作為類的方法的實現
class_addMethod(aClass, aSelector, (IMP)myMethodImpl, types);
所以當使用選擇器aSelector將消息發送到aClass時,會調用myMethodImpl
。 現在,我想創建一個包含myMethodImpl
所有參數的NSInvocation。
有沒有一種從參數列表創建NSInvocation的簡單方法,還是我必須檢查每個元素的類型並相應地添加它?
既然你要在類中添加一個方法,為什么不添加/ swizzle forwardInvocation:
相反? 此時,運行時將很好地為您構建調用。
這是不可能的。 一個簡單的谷歌搜索顯示這篇文章:
http://www.wincent.com/a/about/wincent/weblog/archives/2006/03/nsinvocation_an.php
這清楚地解釋了va_args
如何不能正確使用NSInvocation。
確實有可能。 請參閱https://github.com/rlopezdiez/TMInstanceMethodSwizzler/blob/master/Classes/TMInstanceMethodSwizzler.m中的actionSelectorImplementation函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.