这可能吗?
要举一个具体的例子,请考虑以下宏:
define pos
po ([self $arg0])
end
所以现在如果我输入pos文本,它会变成po [self text]。但是有了多个论点,它失败了,例如pos textLabel文本变为po [self textLabel]而不是所需的po [[self textLabel] text]。
再举一个例子,就像三个命令一样
po someIvar_
po [self someMethod]
po [[self someMethod]someOtherMethod]
打印出所引用的三个对象的描述,定义一个对整数做同样事情的宏pi是很好的,即
pi [self someMethod]
与调用
相同print (int)[self someMethod],
和
类似pi [[self someMethod]someOtherMethod].
答案 0 :(得分:1)
用户定义的命令在执行之前只是字符串替换。您的示例pos textLabel text
将两个参数传递给仅考虑一个参数的命令。第二个被扔掉了。它应该在执行前产生po [self textLabel]
。您所做的与以下java-sum函数相似:
int sum(int[] args){return args.get(0);}
你需要的是...... mentioned here:
define pos
if $argc == 1
po [self $arg0]
end
if $argc == 2
po [[self $arg0] $arg1]
end
..... (as many you need)
end
我没有找到任何一种循环。所以这应该是唯一的方法,除了可以从args中弹出arg0并允许用户定义命令的递归调用。但我认为更容易完成上面的例子。
pi
应以同样的方式实施
define pi
if $argc == 1
print (int)[self $arg0]
end
if $argc == 2
print (int)[[self $arg0] $arg1]
end
....
end
也许有更好的解决方案,但这会让您向目的地迈进一步。
答案 1 :(得分:0)
如果您正在尝试使用 PO PI 终端中的命令可以查看对象的值,或者您希望在运行时更改该值,因此以下是解决方案:
现在,这是调试和分析XCode 4中目标c代码的最佳解决方案。如果要在运行时更改变量的值,只需单击“运行>显示>表达式”即可轻松更改。 .. 在那里你可以为你的变量名提供价值。
但我怀疑你的问题不是Objective-C问题,但我仍然尽力提供解决方案。