2009-05-28 8 views
0

In einer meiner Builds für eine iPhone-App hatte ich versehentlich eine Variable erstellt, die eine Variable im darüber liegenden Bereich überschattete. Dies war unbeabsichtigt, wurde aber kompiliert, da Objective-C offensichtlich das Shadowing von Variablen zwischen einem if-Block und seiner containing-Methode zulässt.Speicherzuweisung zwischen iPhone 2G und 3G

Als ich diesen Code verschickte, stießen Leute, die iPhone 3Gs benutzten, sofort auf Probleme, aber Leute, die 2Gs benutzten, hatten keine offensichtlichen Probleme.

Weiß jemand zufällig, ob es tatsächlich Unterschiede im Betriebssystem für diese beiden Modelle gibt? Haben 2Gs irgendwie Kompilierzeit, statische Speicherzuweisung?

Das war ein riesiger Punkt der Verwirrung, da ich nur ein 2G-Entwicklungsgerät hatte und nie ein Problem fand, obwohl der Code theoretisch nicht wie erwartet funktionieren sollte.

Jetzt gibt es noch ein paar andere Unterschiede darin, dass die 3Gs Builds verwendeten, die auf AdHoc-Builds abzielten, während diejenigen, die die 2Gs verwendeten, auf Release ausgerichtet waren.

Antwort

1

Es sollte keine Unterschiede geben, sie verwenden die gleichen Prozessoren und ich glaube das gleiche RAM. Sie sind praktisch die gleiche Plattform. Das Betriebssystem ist buchstäblich das gleiche - wenn Sie es erzwingen, kann ein iPhone 3G IPSW zu einem 2G (und umgekehrt) wiederhergestellt werden und es funktioniert perfekt (beachten Sie, wenn Sie das IPSW entpacken und schauen Sie sich ein iPhone bauen enthält NOR-Dateien für beide Plattformen).

Es könnte Zufall sein, dass Ihre Benutzer verschiedene Versionen des Betriebssystems haben könnten, oder es könnte ein Unterschied zwischen Ihrem Ad-hoc-Build und Ihrer Version sein.

+0

Hmm, danke. Ich weiß, dass das Betriebssystem selbst das gleiche ist, aber das bedeutet nicht, dass die zugrundeliegende Speicherarchitektur genau dasselbe tut. Die Frage kam wegen eines seltsamen Ereignisses im Fall von Shadowing (schlechte Praxis, ich weiß, es war ein Bug, der nicht bis zur Veröffentlichung gefangen wurde ...). Ich frage mich, ob ich einen statischen Analysator ändern sollte, um nach Shadowing oder so etwas zu suchen ... – Sam

+0

Es gibt keine Unterschiede, auf die Sie von Apple achten dürfen, und deshalb müssen Sie es wahrscheinlich nicht sein. Ich glaube, dass das Verarbeitungssystem auf Anwendungsebene zwischen den beiden Modellen genau gleich ist. Der Unterschied muss die Build-Einstellung sein, oder ob sie eine andere Betriebssystemversion ausgeführt haben. – AriX

+0

(Oder nur ein Zufall) – AriX

Verwandte Themen