【发布时间】:2012-04-24 00:13:50
【问题描述】:
有谁知道如何在IOS中获取类成员变量的值?
我尝试使用LLDB调试类成员变量中的NSArray。
运行后
__cellDataShadowArray2D = [[NSArray alloc] initWithObjects:[NSArray arrayWithObjects:obj1, obj2, nil], nil];
当我使用 LLDB(打印对象)检查值时,我总是得到这个。
(lldb) po __cellDataShadowArray2D
(NSArray *) $66 = 0x001e8894 <object returned empty description>
(lldb) p __cellDataShadowArray2D
(NSArray *) $67 = 0x001e8894
(lldb) po [__cellDataShadowArray2D count]
2012-04-24 10:10:38.535 SOME [61985:15803] -[__NSCFConstantString count]: unrecognized selector sent to instance 0x1e8894
(id) $68 = 0x00000000 <nil>
(lldb) po [__cellDataShadowArray2D retainCount]
(id) $69 = 0xffffffff [no Objective-C description available]
(lldb) p (int) [__cellDataShadowArray2D retainCount]
(int) $70 = -1
(lldb) p (int) [__cellDataShadowArray2D count]
2012-04-24 10:11:31.333 SOME [61985:15803] -[__NSCFConstantString count]: unrecognized selector sent to instance 0x1e8894
(int) $71 = 0
【问题讨论】:
-
你是在分配后立即使用 lldb 吗?该对象是否可能已被释放?
-
另外,__cellDataShadowArray2D 的类型是什么?
-
“类成员变量”是什么意思? ObjC 中没有类变量。你的意思是一个实例变量?还是静态变量?
-
请注意,
po用于打印您发现的 objects - 没有意义将它用于[foo retainCount],它会返回NSUInteger -
我强烈怀疑您实际上并没有运行分配行。它的行为就好像它指向随机存储器。你确定任务已经运行了吗? __cellDataShadowArray2D 是否定义为强变量?
标签: objective-c ios xcode lldb