【发布时间】:2014-10-29 14:13:42
【问题描述】:
我在 Xcode 6 调试器中看到了一个奇怪的行为。 我使用以下代码创建了一个单例共享实例:
+ (instancetype)shared
{
static DataBaseManager *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[DataBaseManager alloc] init];
});
return sharedInstance;
}
在对象通过调用这样的方法初始化之后:
DataBaseManager *manager = [DataBaseManager shared];
NSLog(@"");
我在“NSLog”上放置了一个断点,我看到以下调试器状态:
我已确保我在调试模式下启动,并且构建设置很好,这里的问题是:Xcode debugger doesn't print objects and shows nil, when they aren't
关于为什么会发生这种情况的任何想法? 这是我第一次看到这种奇怪的行为。 任何帮助将非常感激。
**UPDATE**
A bug was reported to apple bug report system.
The bug status is: Duplicate of 17164538 (Closed)
so it is probably a known bug in Xcode.
【问题讨论】:
-
我对 Xcode 调试器可视化的体验是它非常脆弱。您可以依赖的是右侧的 LLDB shell。例如,
po manager、po manager->_databasePath、……如果您遇到一致的问题,您可能需要向 Apple 提交错误报告。 -
@DarkDust 'po manager' 确实打印了 'manager' 的内存地址。一切正常,但这个问题令人沮丧。谢谢。
-
Xcode 变量显示的东西通常毫无价值。任何时候你怀疑它使用
p和po。你会节省很多时间。 (当然,NSLog(@"");不会向您显示任何内容。如果这应该是对manager的唯一引用,那么它很可能被优化器抛弃了。)
标签: ios objective-c xcode debugging