81 votes

UIView peut-il être copié ?

En utilisant simplement ce moyen :

UIView* view2 = [view1 copy]; // view1 existed

Cela fera que le simulateur ne pourra pas lancer cette application.

Essayez de conserver,

UIView* view2 = [view1 retain]; // view1 existed
// modify view2 frame etc

Toute modification de view2 s'appliquera à view1 Je comprends que view2 partagent la même mémoire avec view1 .

Pourquoi ne peut-on pas UIView être copié ? Quelle en est la raison ?

-7voto

ssj Points 519

Vous pouvez créer une méthode comme celle-ci :

-(UILabel*)copyLabelFrom:(UILabel*)label{
//add whatever needs to be copied
UILabel *newLabel = [[UILabel alloc]initWithFrame:label.frame];
newLabel.backgroundColor = label.backgroundColor;
newLabel.textColor = label.textColor;
newLabel.textAlignment = label.textAlignment;
newLabel.text = label.text;
newLabel.font = label.font;

return [newLabel autorelease];

}

Ensuite, vous pouvez définir votre ivar sur la valeur de retour et la conserver comme suit :

myLabel = [[self copyLabelFrom:myOtherLabel] retain];

15 votes

Ça ne répond pas à la question.

1 votes

Que faire si votre étiquette a d'autres paramètres personnalisés comme numberOfLines ou tag ? Allez-vous définir toutes les propriétés ?

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