2009-05-28 9 views
0

Dans l'un de mes builds pour une application iPhone, j'avais créé par inadvertance une variable qui ombrageait une variable dans la portée au-dessus. C'était involontaire, mais compilé puisque Objective-C permet apparemment l'observation de variables entre un if et sa méthode contenant. Quand j'ai envoyé ce code, les personnes qui utilisaient l'iPhone 3G ont immédiatement rencontré des problèmes, mais les personnes utilisant le 2G n'avaient pas de problèmes apparents.Allocation de mémoire entre iPhone 2G et 3G

Est-ce que quelqu'un sait s'il existe des différences de système d'exploitation pour ces deux modèles? Est-ce que les 2G ont une allocation de mémoire statique à la compilation, en quelque sorte?

C'était un énorme point de confusion, puisque je n'avais qu'un périphérique de développement 2G, et je n'ai jamais rencontré de problème, même si théoriquement, le code n'aurait pas dû fonctionner comme prévu. Maintenant, il y a quelques autres différences dans le fait que les 3G utilisaient des builds ciblant une build AdHoc, alors que ceux que les 2G utilisaient étaient ciblés pour Release.

Répondre

1

Il ne devrait pas y avoir de différences, ils utilisent les mêmes processeurs et je crois que la même RAM. Ils sont pratiquement la même plate-forme. Le système d'exploitation est littéralement le même - si vous le forcez, un iPhone 3G IPSW peut être restauré en 2G (et vice versa) et fonctionnera parfaitement (notez que si vous décompressez l'IPSW et regardez dans un iPhone, il contient des fichiers NOR pour les deux plates-formes).

Cela pourrait être une coïncidence, en ce sens que vos utilisateurs pourraient avoir eu différentes versions du système d'exploitation, ou il pourrait y avoir une différence entre votre build ad hoc et votre version.

+0

Hmm, merci. Je réalise que l'OS lui-même est le même, mais cela ne signifie pas que l'architecture de la mémoire sous-jacente fait exactement la même chose. La question est venue à cause d'un événement bizarre dans le cas de Shadowing (mauvaise pratique je sais, c'était un bug qui ne s'est pas pris jusqu'à la libération ...). Je me demande si je devrais être en train de modifier un analyseur statique pour rechercher une observation ou quelque chose ... – Sam

+0

Apple ne connaît pas de différences et vous n'avez donc probablement pas besoin de l'être. Je crois que le système de traitement au niveau de l'application est exactement le même entre les deux modèles. La différence doit avoir été le paramètre de génération ou s'ils exécutaient une version de système d'exploitation différente. – AriX

+0

(Ou juste une coïncidence) – AriX

Questions connexes