NSValue getValue: метод возвращает значение мусора на iPhone 6, но правильное значение на iPhone 5

Я храню 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

1 ответ

Решение

Я сослался на Apple Docs для правильного использования NSValue и нашел это:

введите описание изображения здесь

Я пытался вернуть int значение в NSInteger переменная и после объявления unknownInt как intсейчас все работает нормально.

Другие вопросы по тегам