2010-12-02 7 views
0

J'ai une requête à ce sujet. S'il vous plaît regarder le code exemple ci-dessous:Quelle est la différence entre .tag et tag

UIButton *button;  
button.tag = 1; 

et

int but = (int)[(UIButton*)sender tag]; 

La première ligne, je mis le numéro d'étiquette 1 à la variable bouton, en utilisant la méthode .tag. Et dans la deuxième ligne, j'ai utilisé (int)[(UIButton*)sender tag]; pour extraire et transformer l'expéditeur en une valeur entière. Ma question serait, quelle est la différence entre la méthode .tag et tag?

Répondre

0

Il ne devrait pas y avoir de différence. Avant Objective C 2.0, les méthodes de points n'existaient pas; ceux-ci ont été ajoutés, mais ils fonctionnent comme des raccourcis vers l'appel plus long entre crochets.

Dans votre exemple de code particulier, dans le premier bloc de code, button ne contient pas de pointeur sur un bouton. Vous auriez besoin d'appeler

UIButton *button = [UIButton buttonWithType:UIButtonRoundedRect]; 
button.tag = 1; 

ce fixerait la balise à 1. Le deuxième bloc de code prend un bouton existant et extrait son étiquette à un int, comme vous l'avez indiqué. Un meilleur exemple des méthodes parallèles serait:

button.tag = 1; et [button setTag:1]; ou

int tag = button.tag; et int tag = [button tag];

+0

ah, je vois ... merci! En ce qui concerne la première ligne, je l'ai simplement raccourci parce que je voulais une brève explication. J'ai posé cette question parce que je voulais clarifier la raison pour laquelle je l'ai utilisée. Apparemment, je suis coincé dans une contrainte que je ne peux pas utiliser cette même méthode pour résoudre un problème –

+0

C'est ce que je pensais, je voulais juste m'assurer! Si cette réponse vous a aidé, pourriez-vous cliquer sur le chèque pour l'accepter? –

Questions connexes