IBOutlet
devrait être solide, pour des raisons de performances. Voir Storyboard Reference, Strong IBOutlet, Scene Dock dans iOS 9
Comme expliqué dans ce paragraphe, les sorties vers les sous-vues de la vue du contrôleur de vue peuvent être faibles, car ces sous-vues appartiennent déjà à l'objet de niveau supérieur du fichier nib. Cependant, lorsqu'une prise est définie comme un pointeur faible et que le pointeur est défini, ARC appelle la fonction d'exécution:
id objc_storeWeak(id *object, id value);
Cela ajoute le pointeur (objet) à une table en utilisant la valeur de l'objet comme clé. Ce tableau est appelé tableau faible. ARC utilise ce tableau pour stocker tous les pointeurs faibles de votre application. À présent, lorsque la valeur de l'objet est désallouée, ARC parcourt la table faible et définit la référence faible à zéro. L'ARC peut également appeler:
void objc_destroyWeak(id * object)
Ensuite, l'objet n'est pas enregistré et objc_destroyWeak appelle à nouveau:
objc_storeWeak(id *object, nil)
Cette comptabilité associée à une référence faible peut prendre 2 à 3 fois plus de temps que la publication d'une référence forte. Ainsi, une référence faible introduit une surcharge pour le runtime que vous pouvez éviter en définissant simplement les sorties comme fortes.
Depuis Xcode 7, il suggère strong
Si vous regardez la session 407 de la WWDC 2015 sur la mise en œuvre des conceptions d'interface utilisateur dans Interface Builder , cela suggère (transcription de http://asciiwwdc.com/2015/sessions/407 )
Et la dernière option que je veux souligner est le type de stockage, qui peut être fort ou faible.
En général, vous devez renforcer votre sortie, en particulier si vous connectez une sortie à une sous-vue ou à une contrainte qui ne sera pas toujours conservée par la hiérarchie des vues.
La seule fois où vous avez vraiment besoin de rendre une sortie faible, c'est si vous avez une vue personnalisée qui fait référence à quelque chose de sauvegarder la hiérarchie des vues et en général ce n'est pas recommandé.
Je vais donc choisir fort et je clique sur connecter ce qui va générer ma sortie.
IBOutletCollection()
ne doit pas êtreweak
, sinon il revient commenil
.