lul*_*ulu 8 xcode cocoa objective-c xcode3.2
在需要10.6并且是64位的mac os项目(意思不是iPhone)上工作,允许我使用属性在头文件中生成访问器方法和实例变量.但是,在调试期间,我没有看到如何在填充对象的属性值后查看它们.是否有一些需要打开的构建设置?
如果我声明一个对象的实例变量(在标题中的{}之间),那么我可以在调试期间在调试窗口本身中看到这些值(当它们被使用时),或者通过使用光标悬停在突出显示的线条技巧上在休息期间在编辑器中,或者像在'p*object'中那样在gdb中执行cli.
旧方式:
@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;
Run Code Online (Sandbox Code Playgroud)
新方法:
@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;
Run Code Online (Sandbox Code Playgroud)
在这个新的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)
Run Code Online (Sandbox Code Playgroud)
新方法的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)
Run Code Online (Sandbox Code Playgroud)
所以看看Objective-c 2.0的文档:
描述我所指的(在'现代'运行时中合成实例变量),但在任何地方都没有说,如果你这样做,那么在调试期间这些值将不可用.
我发现了一个包含相关信息的SO页面,但没有关注这个效果: 将实例变量与Modern Runtime一起使用
我错过了什么?
| 归档时间: |
|
| 查看次数: |
1266 次 |
| 最近记录: |