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

NSValue の正しい使用法について Apple Docs を参照したところ、次のことがわかりました。

ここに画像の説明を入力

int値を変数に戻そうとしていましたが、としてNSInteger宣言した後、すべてが正常に機能しています。unknownIntint

于 2016-05-16T10:39:45.727 に答える