43 votes

Pourquoi mon XIB est-il modifié chaque fois que je l'ouvre dans IB ?

Je clique sur le XIB via le navigateur de projet. Il s'ouvre et l'icône devient immédiatement grise, ce qui indique que j'ai des modifications non sauvegardées. Si j'enregistre les modifications, que je clique sur un autre fichier et que je clique à nouveau pour le rouvrir, il y a encore des modifications. Il y a toujours des modifications à l'ouverture.

Cela se produit avec un fichier XIB dans ce projet et deux autres dans un autre projet. J'aimerais savoir pourquoi cela se produit et ce que je peux faire pour le corriger maintenant et l'empêcher à l'avenir.

Note : utilisation de Xcode 3.2 Build 4C199 avec Snow Leopard.

Edit : J'ai ajouté quelques sections qui ont été supprimées du XML lors d'une de ces ouvertures/modifications.

        <key>outlets</key>
        <dict>
            <key>addEventTabBarController</key>
            <string>UITabBarController</string>
            <key>window</key>
            <string>UIWindow</string>
        </dict>
        <key>superclass</key>
        <string>NSObject</string>

y

        <key>outlets</key>
        <dict>
            <key>courseTableCell</key>
            <string>UITableViewCell</string>
        </dict>
        <key>superclass</key>
        <string>UITableViewController</string>

22voto

DBD Points 7024

J'ai fini par soumettre ce problème à Apple. Leur réponse était peu éclairante, et parlait d'optimisations possibles, de mise à jour des méta-données pour la nouvelle version de Xcode et autres.

J'ai suivi 100 versions en cliquant sur le fichier. Comme Apple l'a dit, il "optimisait" à chaque fois, mais à chaque fois il déplaçait simplement quelques balises XML. Jamais satisfait de ses propres optimisations, il les déplaçait la fois suivante où il les ouvrait. Je considérerais cela comme un bogue de Xcode, ennuyeux, mais surtout inoffensif.

Cela ne se produisait qu'avec les anciens XIB et le fait de déplacer le contenu dans un nouveau fichier XIB ou (ce qui s'est réellement produit) dans les Storyboards a permis de résoudre le problème.

6voto

Diego Points 420

Je n'ai pas voulu utiliser les storyboards comme suggéré dans l'une des autres réponses. Voici une autre solution simple et rapide.

Allez dans les propriétés du document de l'Interface Builder dans l'inspecteur lorsque vous sélectionnez le fichier de vue xib. Ensuite, vous devez

  • changer "Deployment" en quelque chose de différent de Project SDK, dans mon cas je l'ai mis à la dernière version d'iOS (iOS 6 actuellement).
  • changer le développement à quelque chose de différent de "Version précédente", dans mon cas, je l'ai mis à la dernière version de Xcode 4.5

J'utilise Xcode 4.5.2 sur Lion.

J'espère que cela vous aidera.

4voto

Jeff Wolski Points 3956

idée de base...

XCode stocke beaucoup de numéros de version de toutes sortes de choses différentes. Si vous regardez la représentation XML du XIB, vous devriez constater que la grande majorité de ces petits changements se trouvent dans ces numéros de version.

Comment ça se passe...

Chaque fois que vous faites une mise à jour de Xcode, beaucoup de choses différentes dans Xcode (et souvent dans le SDK) sont mises à jour. Si vous apportez un changement à un fichier XIB, ces changements de version sont placés dans le XIB. Ainsi, si vous ouvrez un fichier XIB, les changements de version sont placés dans ce fichier. Dès que vous construisez ou exécutez l'application, ces changements sont enregistrés dans le fichier.

Mais je n'ai pas mis à jour Xcode depuis un moment !

Eh bien, à chaque fois que vous avez effectué votre dernière mise à jour, les fichiers XIB seront mis à jour avec les nouveaux numéros de version lorsque vous les ouvrirez, un par un au fil du temps.

0voto

Stephen J Points 1002

Editar XCode 4 est meilleur maintenant, (peut-être), si vous êtes tenté de voter contre, demandez-vous : "Ai-je migré de XCode 3 à XCode 4 en utilisant le Versioning ?" Si non, alors vous n'avez aucune idée de ce que vous faites, et s'il vous plaît ne votez pas sur ce sujet. Si vous l'avez fait, vous savez à quel point vous avez souffert, mais oui, cette question est autrement morte. Si vous vous retrouvez à ouvrir un ancien projet, recréez-le simplement et copiez les fichiers.

Je ne connais pas la réponse exacte, mais je sais que ces éléments vous aideront à la trouver :

XCode 4 est connu pour faire des erreurs. Si vous placez votre répertoire dans un système de gestion de versions (Git), saisissez GitBox et sauvegardez votre projet pour lui donner un état et créer un repo git à partir de celui-ci. Le git repo sauvegardera l'état. Gitbox vous montrera visuellement les changements.

Après l'avoir ouvert, vous pourrez faire un clic droit sur ce fichier dans GitBox et cliquer sur "voir la différence" ou "voir les modifications" ou autre.

Vous serez automatiquement dirigé vers les lignes. Si vous pouvez faire le lien entre le XML et le Xib, vous pourrez déterminer ce qui change.

Je suis passé de Lion à Snow Leopard, donc je n'ai plus à faire face à ce problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X