2011-02-24 38 views
3

我使用@dynamic属性结合-forwardInvocation:在运行时生成属性(如this answer中所述)。现在,当我尝试用这样的属性生效(假设name就是这样的一个动态属性)在GDB我总是得到这样的:@动态属性在GDB中不受支持?

(gdb) call (void) [myObject setName:@"foo"] 
Target does not respond to this message selector. 

(gdb) po [myObject name] 
Target does not respond to this message selector. 

是否有GDB的开关,使这项工作?

+0

你如何使用forwardInvocation:在这种情况下,关于你的实际属性getter和setter? – Ryan 2011-02-24 20:56:23

+0

@Ryan,就像在链接的答案中一样,我也使用字典作为数据存储。 – 2011-02-24 21:20:59

+0

有可能gdb没有为其命令行界面实现中的这种情况做好准备。你是否还在你的对象上实现了-methodSignatureForSelector:?另外,退一步说,如果你的myObject变量没有指向你的类的有效实例,我希望你从gdb得到这个消息。当你运行这个命令时,gdb会打印你期望的类名:“po [myObject class]”? – Ryan 2011-02-24 21:32:45

回答

8

您可以使用po [myObject performSelector:@selector(name)]作为解决方法,虽然它很尴尬。

相关问题