pracując nad projektem mac os (nie oznaczającym iPhone'a) wymagającym 10.6 i 64-bitowym, pozwala mi używać właściwości do generowania zarówno metod dostępu, jak i zmiennych instancji w pliku nagłówkowym. ale podczas debugowania nie widzę sposobu, aby spojrzeć na wartości właściwości obiektu po ich wypełnieniu. czy jest jakieś ustawienie kompilacji, które należy włączyć?xcode 3.2.2 i cel-c 2.0 i debugowanie: gdzie są wartości zmiennych obiektu/instancji mojego obiektu w debugowaniu?
jeśli deklaruję zmienne instancji obiektu (pomiędzy {} w nagłówku), to widzę te wartości (gdy są używane) podczas debugowania w oknie debugowania lub za pomocą wskaźnika myszy nad kursorem podświetlona sztuczka liniowa w edytorze podczas przerwy lub przez wykonanie cli w gdb jak np. "obiekt p *".
stary sposób:
@class Suit;
@interface Card : NSObject
{
NSNumber *playOrder;
Suit *suit;
NSNumber *displayNumber;
NSNumber *orderIndex;
}
@property(nonatomic, retain) Suit *suit;
@property(nonatomic, retain) NSNumber *displayNumber;
@property(nonatomic, retain) NSNumber *orderIndex;
nowy sposób:
@class Suit;
@interface Card : NSObject
@property(nonatomic, retain) Suit *suit;
@property(nonatomic, retain) NSNumber *displayNumber;
@property(nonatomic, retain) NSNumber *orderIndex;
@property(nonatomic, retain) NSNumber *playOrder;
w tej nowej fangled 10,6 wymaganej 64bit idei (co wydaje się prostsze do mnie) żadna z tych metod debugowania wyświetlania wartości obiektu. Myślę, że muszę mieć coś wyłączonego, ponieważ ten nowszy pomysł nie wydaje się lepszy.
wyniki GDB dla staremu:
(gdb) po newCard
New Card : 0 of Suit : Hearts (NSCalibratedRGBColorSpace 1 0 0 1). with orderIndex of: 1
(gdb) p *newCard
$1 = {
<NSObject> = {
isa = 0x100002188
},
members of Card:
playOrder = 0x0,
suit = 0x200053a20,
displayNumber = 0x20001bac0,
orderIndex = 0x200012de0
}
(gdb)
wyniki GDB na nowy sposób:
(gdb) po newCard
New Card : 0 of Suit : Hearts (NSCalibratedRGBColorSpace 1 0 0 1). with orderIndex of: 1
(gdb) p *newCard
$3 = {
<NSObject> = {
isa = 0x100002188
}, <No data fields>}
(gdb)
więc patrząc na docs dla Objective-C 2.0:
opisuje, co mam na myśli (syntetyzując zmienne instancji w 'nowoczesnym' r untime), ale to, co nigdzie nie jest powiedziane, oznacza, że jeśli to zrobisz, wartości nie będą dostępne podczas debugowania.
Znalazłem się SO stronę z istotnych informacji, ale nie skupia się na tym celu: Using instance variables with Modern Runtime
co mnie ominęło?
Czy to możliwe, że włączyłeś kolekcję Garbace? Spróbuj wyłączyć tę funkcję i sprawdź, czy debugger znajduje się na polach. –
yes garbage collection is on w obu przykładowych testach. – lulu