1
我創建了一個新的函數來記錄運行時類中的每個方法。如何在運行時記錄參數?
,我的問題是,在這條線:
id value = va_arg(stackFrame, id);
不轉換的對象類型的參數內。
任何想法我做錯了什麼?有沒有另一種方法來做到這一點?
void DebugArguments (id self, SEL _cmd,...)
{
id receiver = self;
SEL receiverSelector = _cmd;
va_list stackFrame;
va_start(stackFrame, _cmd);
NSMethodSignature *signature
= [receiver methodSignatureForSelector:receiverSelector];
NSUInteger count = [signature numberOfArguments];
NSUInteger index = 2;
for (; index < count; index++)
{
id value = va_arg(stackFrame, id);
if (!value)
{
NSLog(@"Arguments: %@",value);
}
}
va_end(stackFrame);
}
你真的不清楚你在問什麼,我敢肯定你已經包含了很多與代碼無關的代碼 - 嘗試減少代碼量並且確切地說明你的代碼當前的功能是什麼錯誤和你想要發生的事情。 – JosephH
我調用函數InitDebug從一類這樣的: - (空)MyTest的:(* NSString的)串 { InitDebug(個體經營,_cmd); \t } 我希望從方法MyTest記錄參數字符串。 – Willy
什麼是結果類型的'價值',你期望什麼? –