2010-12-15 112 views
5

J'ai une application dans laquelle le paquet d'application contient un fichier image (je veux dire que le fichier est glissé dans XCode et apparaît dans "Autres sources"), et j'utilise le code comme:iOS Objective-C Nom du fichier image/chemin comportement différent entre le simulateur et le périphérique

[[NSBundle mainBundle] pathForResource:@"Auto" ofType:@"jpg"] 

pour obtenir un chemin à l'image.

J'ai trouvé que lors de l'exécution sur un appareil (iPod Touch), le nom est sensible à la casse, de sorte que si le fichier est "Auto" et j'utilise "AUTO", le poath retourné est "file: // (nul)". Cependant sur le simulateur, si j'utilise "AUTO", cela fonctionne comme si j'utilisais "Auto".

Je pense que le fait que le simulateur ait une telle différence de comportement par rapport à l'appareil est un bug. Est-ce que les utilisateurs les plus expérimentés pensent que c'est le cas, et que je devrais le signaler à Apple?

Merci.

+2

En effet. Revenez sur vos anciennes questions et acceptez quelques réponses. Personne ne veut aider si vous allez être ingrat. –

Répondre

0

Je pense que le fait que le simulateur ait une telle différence de comportement par rapport à l'appareil est un bug.

En général, cela n'indique pas nécessairement un bogue.

Est-ce que les utilisateurs les plus expérimentés pensent que c'est le cas, et que je devrais le signaler à Apple?

Oui. Mais le bug n'a rien à voir avec l'appareil. Plus précisément, le bogue est simplement "Les chemins de fichiers du simulateur ne sont pas sensibles à la casse". Si vous pouvez le reproduire dans un projet "bac à sable", faites-le et soumettez-le avec votre rapport de bogue.

+0

Je me rends compte que ce que j'ai trouvé ne signifie pas qu'il y a un bug dans l'appareil. Je suis d'accord avec votre déclaration de ce que le bogue est. J'essaierai d'élaborer un projet simple et de le signaler. Ça ne devrait pas être trop dur. –

4

Le système de fichiers iOS est sensible à la casse, contrairement au système de fichiers OSX utilisé par le simulateur.

Vous devez être très prudent avec cela, je me suis tiré dans le pied avec cela plus d'une fois.

1

Cela a plus à voir avec NS/CFBundle lui-même que le fait avec le système de fichiers sous-jacent:

Directement à partir Bundle Programming Guide: The Bundle Search Pattern:

Important: Les interfaces de faisceau considèrent le cas lors de la recherche fichiers de ressources dans le répertoire du bundle. Cette recherche sensible à la casse se produit même sur les systèmes de fichiers (tels que HFS +) qui ne sont pas sensibles à la casse lorsqu'il s'agit de noms de fichiers.

Vous devez toujours prendre en compte la casse. Eh bien, peut-être une meilleure façon d'exprimer cela est de ne jamais supposer que Case-insensitive-while-case-preserve (qui est ce que HFS + est). Dans un avenir pas si lointain, HFS + sensible à la casse pourrait devenir le format par défaut pour Mac OS X. (En général, il serait préférable au HFS + actuel, mais si Apple devait le changer maintenant, il y aurait Le iPhone est un exemple clair de la préférence pour les HFS + sensibles aux majuscules et minuscules. sensible aux majuscules et minuscules).

Vous modifiez actuellement votre nom de code et de ressource, alors prenez le temps de vous assurer qu'ils correspondent.

+0

J'ai soumis le rapport de bug Apple 8903105 à ce sujet, le considérant comme un bug dans le simulateur. –

+0

La réponse d'Apple est que puisque le simulateur fonctionne sur Mac OS, c'est le bon comportement. Je suppose que ce serait difficile de le corriger ... –