【问题标题】:lldb error: use of undeclared identifierlldb 错误:使用未声明的标识符
【发布时间】:2012-07-15 00:07:07
【问题描述】:

任何人都知道这里发生了什么:

@implementation Test
{
    NSData *_data;
}

- (id)initWithData:(NSData *)data
{
    self = [super init];
    if (self)
    {
        _data = data;
    } 
    return self;  // BREAKPOINT HERE
}

来自 lldb:

(lldb) p data
(NSData *) $1 = 0x07f911e0 30308 bytes
(lldb) p _data
error: use of undeclared identifier '_data'
error: 1 errors parsing expression

为什么我看不到_data

【问题讨论】:

    标签: objective-c ios xcode lldb


    【解决方案1】:

    我只见过在@interface 块中声明的数据字段;您似乎正在@implementation 中定义字段。

    尝试将其放在标题中,例如

    @interface Test
    {
        NSData *_data;
    }
    . . .
    @end
    

    【讨论】:

    • 这是一个新的 Clang 特性;这是完全合法的,非常好。见:stackoverflow.com/questions/10407848/…
    • 整洁。我想我可以将它用于 iOS,但不能用于旧的 Mac 开发。 :) 无论如何,我怀疑它可能仍然是调试工具无法看到该字段的一个因素。
    • 是的,lldb 似乎仍然在使用 ivars 时遇到一些困难。我在这里发布了一个答案(现已删除)解决这个问题。
    • 我仍然看到此错误消息。甚至不涉及 ivar,它是一个局部变量。
    猜你喜欢
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 2013-03-12
    • 2014-08-04
    • 2020-05-05
    • 2019-09-29
    • 1970-01-01
    相关资源
    最近更新 更多