2012-07-15 90 views
2

任何人都知道怎麼回事就在這裏:LLDB錯誤:使用未聲明的標識符

@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

回答

-1

我只見過在@interface塊中聲明的數據字段;您似乎在@implementation中定義了字段。

請嘗試將其置於標題中,例如

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

這是一個新穎的鏗鏘聲功能;這是完全合法的,非常好。請參閱:http://stackoverflow.com/questions/10407848/is-this-a-new-way-to-define-private-instance-variables-in-objective-c/10407891#10407891 – 2012-07-15 04:55:41

+0

整潔。我想我可以在iOS上使用它,但不適用於較舊的Mac開發。 :)無論如何,我懷疑它可能仍然是調試工具無法看到該字段的原因。 – 2012-07-15 05:00:59

+0

是的,lldb似乎仍然與ivars有一些艱難時期。我在這裏發佈了一個答案(現在刪除)來解決這個問題 – 2012-07-15 05:07:56