Pau*_*ald 8 gdb objective-c ios
我有一个类,Song,它是NSManagedObject的子类.我正在使用GDB来尝试找出我遇到的问题,并且很难使用gdb在我的类上调用访问器.
Song.h:
@property (nonatomic, retain) NSString * title;
Run Code Online (Sandbox Code Playgroud)
Song.m:
@dynamic title;
Run Code Online (Sandbox Code Playgroud)
在调试器中,我看到对象上的"title"字段,当我尝试使用访问器打印值时,如果我理解正确,它应该在运行时生成,它会给我一个错误:
(gdb) po aSong <Song: 0x59188d0>
(entity: Song; id: 0x59162d0
<x-coredata://99BE63F8-840A-47B5-A259-BCD74E1811C4/Song/p2>
; data: {
composers = "<relationship fault: 0x4d62f30 'composers'>";
dateCreated = nil;
songLists = "<relationship fault: 0x59243c0 'songLists'>";
title = "cancel?"; })
(gdb) p aSong.title There is no member named
title.
(gdb) p [aSong title]
Target does not respond to this message selector.
Run Code Online (Sandbox Code Playgroud)
我有可能在这里做一些非常愚蠢的事情,但我做错了什么?有没有办法反省一个对象,看看它将使用GDB响应什么消息?
Sco*_*bes 26
您可以gdb使用该valueForKey:方法访问动态生成的属性,如[aSong valueForKey:@"title"].(这种技术也适用于合成属性,如果你是一个受虐狂,但实际上它只在检查NSManagedObject及其子类时派上用场.)
小智 3
可悲的是,这就是gdb行为方式。它似乎只是现在或在编译时查看对象的实现(我还没有弄清楚),而不是询问对象是否会响应选择器。由于 Core Data 属性是在消息转发过程中处理的,因此调试器不认为它NSManagedObject会响应属性选择器。
这可能值得作为错误报告给 Apple,以便他们可以修复调试器。
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |