私は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
