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
сейчас все работает нормально.