2009-05-28 10 views
0

私のiPhoneアプリケーションのビルドの1つでは、誤って変数を作成して、上のスコープ内の変数をシャドウしました。これは意図的ではありませんでしたが、Objective-Cはifブロックとその包含メソッドの間で変数のシャドーイングを可能にするので、コンパイルされました。iPhone 2Gと3G間のメモリ割り当て

このコードを送信したとき、すぐにiPhone 3Gsを使用していた人は問題に遭遇しましたが、2Gを使用している人は明らかな問題はありませんでした。

これらの2つのモデルに実際のOSの違いがあるかどうかは知りませんか? 2Gはコンパイル時に静的なメモリ割り当てを何とかしていますか?

私は2G開発デバイスしか持っていなかったので、理論的にはコードは期待通りに機能してはいけませんが、問題が発生したことはありませんでした。

ここで、3GはAdHocビルドをターゲットにしているビルドを使用していたのに対して、2Gが使用していたビルドはリリース対象でした。

答えて

1

違いはありません、彼らは同じプロセッサを使用し、私は同じRAMと思います。彼らは事実上同じプラットフォームです。 OSは文字通り同じです。あなたが強制すると、iPhone 3G IPSWは2Gに復元することができます(またその逆も可能です)。完全に動作します(IPSWを解凍してiPhoneのビルドを調べると、両方のプラットフォーム)。

あなたのユーザーが異なるバージョンのOSを持っている可能性があります。また、アドホックなビルドとリリースの違いかもしれません。

+0

よろしくお願いいたします。私はOS自体が同じであることを認識していますが、これは基礎となるメモリアーキテクチャがまったく同じことを意味するわけではありません。問題はシャドウイングの場合の変なイベント(私が知っている悪い習慣で、リリースまで捕まえられなかったバグだったからです)。私はシャドウイングや何かを探すためにスタティックアナライザーを変更する必要があるのか​​と疑問に思っています... – Sam

+0

アップルが知っていることが許される違いはありません。私は、アプリケーションレベルの処理システムは、2つのモデル間で全く同じだと考えています。違いはビルド設定であるか、異なるOSバージョンを実行していた場合でなければなりません。 – AriX

+0

(または単に偶然) – AriX