2015-04-19 122 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