web-dev-qa-db-fra.com

Quelle est la manière la plus efficace? StoryBoard ou XIB?

Ma question est légèrement différente alors mon titre suggère. J'ai travaillé avec xib. Maintenant j'essaye de travailler avec le storyboard. Ma question est de savoir si nous naviguons à travers une classe d'une autre classe, est StoryBoard donnant l'avantage pour une meilleure gestion de la mémoire. Supposons que nous ayons 2 ViewControllers: ViewControllerA et ViewControllerB. Nous essayons de passer par ViewControllerA -> ViewControllerB. Maintenant, dans Xib, notre approche est ci-dessous;

ViewControllerB *VCB = [ [ViewControllerB alloc] init];
[self.navigationController pushViewController: VCB Animated: YES];

Où dans Story Board,

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"Second"])
    {
        SecondViewController *objSecond = (SecondViewController*)[segue destinationViewController];

    }
}

Et fait,

[self performSegueWithIdentifier:@"Second" sender:self];

Donc, ma question est Nous allouons notre classe dans Xib, Où dans storyBoard nous ne sommes pas. Y a-t-il donc des avantages d'allocation de mémoire dans le storyboard?

25
Sharma Vishal

Il ne s'agit pas de dire lequel est le meilleur. car lequel est bon à dire en fonction des besoins de l'équipe.

Si vous êtes un développeur unique, il est bon d'utiliser le storyboard car il consomme moins de temps. Si l'équipe est composée de nombreux développeurs, utilisez xib, sinon, il n'est pas facile de fusionner les modules/tâches.

xcode-using-storyboards-and-xibs-versus-création-vues-par programme

Utilisation des XIB

Avantages:

  • Vous pouvez rapidement créer une interface utilisateur

  • Implémentation simple pour les petites applications avec un nombre minimal d'écrans

  • Vous pouvez avoir des XIB séparés pour différentes localisations (c.-à-d. Langues ou pays)

  • Idéal pour disposer les éléments et repérer visuellement les désalignements. Il est facile de faire un léger ajustement à la mise en page

Inconvénients:

  • Il est difficile de fusionner les conflits lorsque vous travaillez dans un environnement d'équipe (difficile à différencier, fusionner et lire)

  • Les vues hautement dynamiques sont impossibles à décrire comme un XIB

  • En termes de performances, c'est plus lent que de créer des vues via du code car le xib doit être lu sur le disque et analysé/analysé

  • Les XIB manquent de personnalisations que vous pouvez faire dans du code comme des trucs Quartz (ombres portées, coins arrondis)

  • Plus difficile à déboguer (c'est-à-dire si vous oubliez d'établir une connexion dans Interface Builder ou d'établir une mauvaise connexion)

Storyboards

Avantages:

  • Les storyboards sont agréables pour les applications avec une petite à moyenne quantité d'écrans et les exigences de navigation sont relativement simples entre les vues

  • Vous pouvez simuler le flux d'une application sans écrire beaucoup de code, le cas échéant

Inconvénients:

  • Les storyboards ne sont pas compatibles avec la version antérieure à iOS 5, ce qui rend la prise en charge d'iOS 4.3 impossible

  • Il est difficile de travailler en parallèle dans un environnement d'équipe car tout le monde modifie le même fichier

  • Dans le même esprit, la fusion de storyboards conflictuels dans GIT sera pénible

  • Les gens ont rencontré des bogues dans Xcode avec l'utilisation de storyboards (par exemple, avoir à vider fréquemment le dossier DerivedData en raison d'incohérences)

36
codercat

Mon point de vue qu'un développeur professionnel MUST use xibs, mais amateur, novice en programmation, le développeur pourrait être aidé s'il utilise le storyboard.

Storyboard

Après un travail de projet de 3 ans avec un seul storyboard, je peux dire à un lot of disadvantages:

1) Il devient VRAIMENT TRÈS TRÈS lent à construire, même pour une réflexion très très très limitée (chaque vue doit être reconstruite). De plus, il est très difficile d'éditer même avec un iMac à 8 ou 16 Go de RAM si le Storyboard s'agrandit. C'est même difficile de l'ouvrir.

2) Aucune réutilisabilité. Il n'y a aucun moyen d'importer immédiatement un View/ViewController avec sa vue dans un autre projet. Il sera connecté avec d'autres ViewControllers, Views Or Segues et cela le fera comme une grosse réflexion "ne touchez pas".

3) il y a tellement de retard lorsque le projet devient plus grand, même pour la plus petite contrainte de mise en page à ajouter ou à modifier, que vous ne voulez jamais y toucher.

4) Si vous utilisez les cellules par ajout automatique de cellules du storyboard, vous ne pouvez pas utiliser la même construction de cellule en deux points.

Avantage:

1) Cellules automatiques (mais c'est aussi un inconvénient car une cellule ne peut pas être réutilisée telle quelle dans une autre vue)

2) Segues etc. permettrait à quelqu'un de comprendre facilement avec un seul point de vue ce qui se passe.

Xibs:

1) Entièrement portable.

2) Ouvrir/Modifier/Construire SO BEAUCOUP BEAUCOUP PLUS RAPIDE qu'un storyboard qui grossit

conclusion:

Si vous êtes un développeur amateur qui fera une application pour son entreprise pour le plaisir, vous devriez utiliser le storyboard car il sera plus facile de comprendre les choses. MAIS, si vous êtes un développeur professionnel, vous DEVEZ utiliser des xib pour les VC, les cellules, etc., car c'est le seul moyen de les rendre vraiment réutilisables et portables, afin de gagner autant de temps pour le prochain projet, ou même lorsque vous devez faites un petit changement ou reconstruisez le storyboard.

Explication pourquoi les xibs sont plus "réutilisables et portables" pour moi: les choses en programmation doivent être conservées dans différents modèles, fichiers, entités, modules. Il faut être aussi dépendant d'une autre chose que possible

38
Giorgos Ath

En comparant XIB et storyBoard, StoryBoard est rapide.

Mais en fait, rapidement quand tout le projet est programmé.

dans le storyboard lorsque nous compilons tout storyBoard est archive dans un fichier. et désarchivez puis exécutez l'application. Mais, par programmation, les classes sont allouées au moment de l'exécution uniquement.

5
Vineesh TP

le story-board est fortement recommandé par Apple maintenant et hautement recommandé, tout est central et la gestion de la mémoire est effectuée par le compilateur. mais le storyboard est recommandé et facile à comprendre voir une partie de MVC

0
m-farhan