2015-04-19 64 views
1

我是Objective-C的新手。動態獲取方法參數Objective-C

[deskCalc add: 55]; NSLog(@"After adding %f to accumulator, accumulator is :%f", 55, [deskCalc accumulator]);

一些背景;這是一個簡單的計算器程序的片段,看起來與this thread中的第一篇文章中發現的程序非常相似。顧名思義,add方法將參數添加到一個整數變量「accumulator」中,該變量存儲最終值。最後,累加器方法只是返回變量。

我的問題是:而不是必須在字符串後面手動鍵入參數(在這種情況下爲55),是否有可能引用任何參數傳遞給add方法(動態)的代碼?

我見過的其他問題(如thisthis)至少聲音有點simlar到像我這樣的小白,但我一直沒能加入點,找出一個解決方案。

回答

2

通常,您無法從先前的消息發送表達式中檢索參數。

一個簡單的解決方案是將值的變量,是指它在這兩個地方:

float addend = 55; 
[deskCalc add: addend]; 
NSLog(@"After adding %f to accumulator, accumulator is :%f", addend, [deskCalc accumulator]); 

IFdeskCalc對象是特定的編碼,以保持最近的操作和跟蹤其操作數,你可以問它的價值。在這裏我假設該類別上存在lastAddend屬性並使用該屬性:

[deskCalc add: 55]; 
NSLog(@"After adding %f to accumulator, accumulator is :%f", [deskCalc lastAddend], [deskCalc accumulator]); 
+0

這很有道理。不幸的是,我的名聲還不夠高,無法對您的回覆進行投票,但感謝您的快速回復。真的很感激它。 – imd