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?
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
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)
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)
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
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.
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