Objective c XCode 7(从XCode 5升级),在self上设置int变量的行为异常

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

所以我从Xcode 5中获取一个项目,并将其移植到Xcode 7。我遇到了一些非常奇怪的行为,本质上我有一个类,它在自己身上设置了一个整型实例变量,当它这样做时,由于某种原因,整数值变得混乱(好像有一些奇怪的指针引用在进行)

下面是代码的基本要点

@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进行单元测试)