IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> alloc, ok mais init ?
Options
Slumb
posté 29 Jun 2014, 13:56
Message #1


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 782
Inscrit : 11 Sep 2005
Membre no 45 692



Bonjour à tous,

J'ai ce genre de ligne :

Code
NSNumber *arg = [[NSNumberFormatter alloc] numberFromString:[NSString stringWithUTF8String:argv[1]]];


Je voulais savoir, d'après vous si c'est correct ou pas. La méthode numberFromString est une méthode d'instance, donc j'ai besoin de déclarer et de l'attribuer à une var mais n'est-il pas plus propre de passer par un init et ensuite de récupérer l'instance pour l'attribuer au NSNumber ? (faire en deux étapes quoi).

Bref, j'aimerais plus de détails sur ce genre de chose.

Merci à vous.


--------------------
iMac 27" - MBP 15"
PC ASUS Z97 WIFI + Bluetooth - Intel Core i7-4790K CPU 4,00GHz - GeForce 980 GTX ZOTAC 4Go - 16Go RAM - SSD Crucial
Bluetooth Device (Personal Area Network)
Bluetooth Device (RFCOMM Protocol TDI)
Carte réseau Broadcom 802.11ac
Intel Ethernet Connection I218-V
Go to the top of the page
 
+Quote Post
ntx
posté 29 Jun 2014, 16:22
Message #2


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 490
Inscrit : 19 Aug 2004
Lieu : 92
Membre no 22 254



Un formateur est fait pour formater, ce que tu ne fais pas dans ton exemple. laugh.gif

Je ferais plutôt quelques chose du genre :

Code
[NSNumber numberWithInt: [[NSString stringWithUTF8String:argv[1]] integerValue]];
ou
Code
[NSNumber numberWithFloat: [[NSString stringWithUTF8String:argv[1]] floatValue]];
Go to the top of the page
 
+Quote Post
Slumb
posté 29 Jun 2014, 17:44
Message #3


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 782
Inscrit : 11 Sep 2005
Membre no 45 692



Je l'ai pas vu venir celle-là !!! J'utilisais le formatter parce que je n'avait pas vu ces méthodes dans NSString. Je cri au suicide smile.gif

Merci pour ta réponse, bon mais quand est-il du init alors ? (admettons que le NSString ne soit pas possible ou qu'on applique cet exemple sur autre chose).

Merci.


--------------------
iMac 27" - MBP 15"
PC ASUS Z97 WIFI + Bluetooth - Intel Core i7-4790K CPU 4,00GHz - GeForce 980 GTX ZOTAC 4Go - 16Go RAM - SSD Crucial
Bluetooth Device (Personal Area Network)
Bluetooth Device (RFCOMM Protocol TDI)
Carte réseau Broadcom 802.11ac
Intel Ethernet Connection I218-V
Go to the top of the page
 
+Quote Post
ntx
posté 30 Jun 2014, 20:03
Message #4


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 490
Inscrit : 19 Aug 2004
Lieu : 92
Membre no 22 254



Il faudrait savoir ce que font exactement les fonctions NSString::init et NSObject::init ... Il est sûr que c'est plus propre d'appeler init avant de travailler sur une instance d'un objet.
Go to the top of the page
 
+Quote Post
Slumb
posté 7 Jul 2014, 20:12
Message #5


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 782
Inscrit : 11 Sep 2005
Membre no 45 692



Ok, je suis complètement d'accord pour le init. Je vais chercher une réponse un peu plus technique, je repasserais si je trouve.

Merci.


--------------------
iMac 27" - MBP 15"
PC ASUS Z97 WIFI + Bluetooth - Intel Core i7-4790K CPU 4,00GHz - GeForce 980 GTX ZOTAC 4Go - 16Go RAM - SSD Crucial
Bluetooth Device (Personal Area Network)
Bluetooth Device (RFCOMM Protocol TDI)
Carte réseau Broadcom 802.11ac
Intel Ethernet Connection I218-V
Go to the top of the page
 
+Quote Post
marc_os
posté 13 Aug 2014, 16:10
Message #6


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 484
Inscrit : 21 Apr 2006
Membre no 59 799



Citation (Slumb @ 7 Jul 2014, 21:12) *
Ok, je suis complètement d'accord pour le init. Je vais chercher une réponse un peu plus technique, je repasserais si je trouve.

Merci.

Salut,
Il y a quelques explications dans la documentation d'Apple.

En voici un petit résumé :
En Objective-C, alloc crée une instance d'objet "vide", càd un objet dont toutes les propriétés valent 0.
Tout objet doit être initialisé, et ça se passe via la méthode init. A noter :
  • S'il y a un problème d'initialisation, init peut renvoyer nil.
  • init peut même renvoyer une autre instance que celle créée initaliement par alloc.
excl.gif Il est donc important d'utiliser la valeur renvoyée par init et non pas celle renvoyée par alloc.

Enfin, pour chaque classe, il peut exister des méthodes d'initialisation particulières permettant par exemple de fournir des valeurs initiales du style initWith...
Les utiliser alors plutôt que le simple init.


--------------------
-----------------
--JE-------SUIS--
--AHMED-CHARLIE--
--CLARISSA-YOAV--
-----------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 28th March 2024 - 18:34