我的Xcode项目中有以下代码:
- (BOOL)getIP;
{
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://httpbin.org/ip"]];
request.HTTPMethod = @"GET";
[request setValue:@"TestValue" forHTTPHeaderField:@"Test"];
NSHTTPURLResponse *response = nil;
NSError *error = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"getIP returns = %@", dict);
return NO;
}
当我使用“ breakpoint set -b CFURLRequestSetHTTPHeaderFieldValue”命令在lldb中设置断点并触发getIP方法时,代码按预期停止。然后输入“ po $ x0”
“ lldb命令,它会显示“ <CFMutableURLRequest 0x1741bff00 [0x1a7808bb8]
> {url = http://httpbin.org/ip,cs = 0x0}”。
我想知道的是:1.如何访问结构CFMutableURLRequest中的url; 2.如何获取结构CFMutableURLRequest的定义。
谢谢!
答案 0 :(得分:0)
po
命令向您显示发送到对象的description
消息的结果。不能保证description
打印的文本会告诉您对象中的特定ivars,这只是一些自由格式的文本,类作者可以用她认为最能描述对象的任何内容来填充。它说“ url =”的事实并不意味着实际上存在一个名为url的ivar。
您可以使用p
或expr
命令来打印对象的内容(至少在调试器可用的范围内)。由于这是一个指针,因此您需要要做:
(lldb) p *request
在这种情况下,看起来这些对象是不透明的-调试信息没有说明它们的布局方式。因此,调试器无法真正帮助您直接查看对象。