1
NSInteger
をNSValue
に格納しています。値を取得している間にガーベジ値が取得されています。NSValue getValue:メソッドは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
私はiPhone 5にiPhone 6でこのゴミ値と正しいものを取得しています
ということです
NSLog(@ "%lu"、(unsigned long)unknownInt)を使用するとどうなりますか? – trojanfoe
iPhone 5で実行すると値0が表示されますが、iPhone 6ではガベージ値が表示されます。 – enigma
本当ですか?両方とも64ビットですか? – trojanfoe