2016-05-12 5 views
-1

最近NSNumberの初期化に関連して興味深い問題が見つかりました。NSNumberの初期化の問題

シミュレータ(9.3.1)とデバイス(9.3.1)の間に違いが生じました。

私たちはint x = 2を持っていると仮定しよう。 NSNumberを初期化してメソッドに渡します。

NSNumber *test = [NSNumber numberWithInt:self.x]; 
[self.method setTestNumber: test]; 

この2行は、シミュレータとデバイスの両方で正しい結果を示しました。

[self.method setTestNumber:[NSNumber numberWithInt:self.x]]; 

は全く予想外の結果を持っていただけで、このラインを使用して

しかし 。シミュレータNSNumber intValueで2を実行しました。

デバイス上で実行すると、ランダムな値が正しくありませんでした。そんなことがあるものか?デバイスはiPad 4 A1458です。また、iPad 3 16GBでテストされています。同じ問題が発生しました。この問題を確認できますか?

+2

問題を再現できません。あなたの "メソッド"クラスがどのように見え、どのように初期化するのかを知ることは役に立ちます。 – tuvok

+0

'setTestNumber'メソッドを書いてください。その方法に問題があるはずです – Lion

+0

「シミュレータ(9.3.1)」とはどういう意味ですか?私たちはiOS 9.3.1シミュレータランタイムをリリースしていません。私はあなたがiOS 9.3を意味すると思いますか? –

答えて

0

コンパイラは実際には、これらの2つのコードパスをまったく同じasmに最適化します。それらの間に違いはありません。

+0

私は後でそれを再現し、サイドプロジェクトにこの効果を示す正確なコード/ github repo + screenshotsを投稿します。 NDAのために正確なコードを投稿できません。 –

関連する問題