1

我正在存储一个NSInteger内部NSValue,并在检索值时得到一个垃圾值。有趣的是,我在 iPhone 6 上得到了这个垃圾值,而在 iPhone 5 上得到了正确的值。

这是我的代码的一部分:

NSValue *unknown = nil;

[self getValueForUnknown:&unknown];

if (unknown) {
    NSInteger unknownInt;
    [unknown getValue:&unknownInt];

    NSLog(@"%lu", (unsigned long)unknownInt);    // prints the correct value on iPhone 5 but a garbage value on iPhone 6
}

...

- (void)getValueForUnknown:(NSValue **)unknownArg {
    int x = 0;
    *unknownArg = [NSValue value:&x withObjCType:@encode(int)];
}

注意:两个设备都在运行iOS 9.3.1

4

1 回答 1

0

我参考了 Apple Docs 以了解 NSValue 的正确用法,并发现:

在此处输入图像描述

我试图将值取回int一个NSInteger变量,并在声明unknownInt为之后int,现在一切正常。

于 2016-05-16T10:39:45.727 回答