, работающий над проектом Mac OS (имеется в виду не iPhone), требующим 10.6 и 64-битным, позволяет мне использовать свойства для генерации как методов доступа, так и переменных экземпляра в заголовочном файле. но во время отладки я не вижу, как посмотреть значения свойств объекта после их заполнения. есть какие-то настройки сборки, которые нужно включить?
если я объявляю переменные экземпляра объекта (между {} в заголовке), то я могу видеть эти значения (когда они используются) во время отладки либо в самом окне отладки, либо с помощью наведения курсора на выделенный трюк в редакторе во время перерыва или путем выполнения cli в gdb, например, 'p * object'.
старый способ:
@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;
новый способ:
@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;
в этой новомодной версии 10.6 требовалось 64-битное представление (что мне кажется более простым), ни один из этих методов отладки не отображает значения объекта. я полагаю, что у меня должно быть что-то выключено, потому что эта новая идея не кажется лучше.
GDB результаты для старого способа:
(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)
GDB результаты для нового пути:
(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)
так что смотрите в документах для объектива-c 2.0:
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW3
описывает то, что я имею в виду (синтез переменных экземпляра в «современной» среде выполнения), но что нигде не сказано, так это то, что если вы сделаете это, значения не будут доступны во время отладки.
Я нашел страницу SO с соответствующей информацией, но не сфокусирован на этом эффекте:
Использование переменных экземпляра с Modern Runtime
что я пропустил?