Objective c XCode 7(从XCode 5升级),在self上设置int变量的行为异常
所以我从Xcode 5中获取一个项目,并将其移植到Xcode 7。我遇到了一些非常奇怪的行为,本质上我有一个类,它在自己身上设置了一个整型实例变量,当它这样做时,由于某种原因,整数值变得混乱(好像有一些奇怪的指针引用在进行) 下面是代码的基本要点Objective c XCode 7(从XCode 5升级),在self上设置int变量的行为异常,objective-c,xcode,macos,xcode5,xcode7,Objective C,Xcode,Macos,Xcode5,Xcode7,所以我从Xcode 5中获取一个项目,并将其移植到Xcode 7。我遇到了一些非常奇怪的行为,本质上我有一个类,它在自己身上设置了一个整型实例变量,当它这样做时,由于某种原因,整数值变得混乱(好像有一些奇怪的指针引用在进行) 下面是代码的基本要点 @interface MyClass : NSObject { int myValue; NSString *myString; } + (id) defaultMyClass - (BOOL) setUpMyValues @en
@interface MyClass : NSObject
{
int myValue;
NSString *myString;
}
+ (id) defaultMyClass
- (BOOL) setUpMyValues
@end
@implementation MyClass
+ (id) defaultMyClass
{
return [[[MyClass alloc] init] autorelease];
}
- (id) init
{
self = [ super init ];
myString = nil;
return self;
}
- (BOOL) setUpMyValues
{
myValue = 21;
myString = @"real string value";
return true;
}
通过lldb,我最终得到的是
> p myValue
> (int) $1 = 3285152 // This number changes on each run
> p myString
> (NSString *) $3 = 0x003220a0 class name = MyClass
> p self
> (MyClass *) $5 = 0x0013a6f0
> p self[0]
> (MyClass) $6 = {}
我认为我为self和self[0]所获得的价值观与这个问题有关。查看调试器中的变量列表,扩展self的内容只会提供[0],因此看起来有点像这样:
[A] self = (MyClass *) 0x13a6f0
[0] (MyClass)
//Nothing further expands.
我真的不知道是什么导致了这个问题。有人知道吗?当您在lldb中查看这些值时,您在哪里设置断点?我看不到在哪里调用了
setUpMyValues
。@返回true时我是jorf。请尝试print(int)myValue
。我看到调试器有时会感到困惑。另外,这是调试版本还是发布版本?如果启用优化的发布版本,调试器通常会打印不正确的信息。print(int)myValue返回相同的信息。这实际上是在调试模式下的测试构建上运行的(因此通过XCTest进行单元测试)