Ca ne marche pas ... je ne comprends pas ...

13:57 modifié dans API AppKit #1
Pouvez vous me dire ce qui cloche avec ce bout de code svp :


#import &quot;maClass.h&quot;<br /><br />@implementation maClass<br />- (IBAction)send:(id)sender {<br />&nbsp; &nbsp; &nbsp; &nbsp; int poids = [tpoids intValue];<br />	float taille2 = [ttaille floatValue] * [ttaille floatValue];<br />	float imc = poids / taille2;<br />	[result setFloatValue:imc];<br />	NSString *obs = [[NSString alloc] init];<br />	if (imc &lt; 16) {<br />		obs = @&quot;Vous êtes en maigreur extrême ! Contactez un médecin impérativement !&quot;;<br />	}<br />	else if (imc &gt; 16 &amp;&amp; imc &lt; 18,5) {<br />		obs = @&quot;Vous êtes maigre. Il faut manger plus.&quot;;<br />	}<br />	else if (imc &gt; 18,5 &amp;&amp; imc &lt; 24,9) {<br />		obs = @&quot;Vous avez la ligne ! Tachez de la garder !&quot;;<br />	}<br />	else if (imc &gt; 25 &amp;&amp; imc &lt; 29,9) {<br />		obs = @&quot;Vous etes en embonpoint ! Un petit régime serait le bienvenue !&quot;;<br />	}<br />	else if (imc &gt; 30 &amp;&amp; imc &lt; 39,9) {<br />		obs = @&quot;Il faut maigrir absolument ! Vous êtes obése !&quot;;<br />	}<br />	else {<br />		obs = @&quot;Vous êtes en obésité morbide. Le risque de maladie cardio-vasculaire est extrême !&quot;;<br />	}<br />	[observation setStringValue:obs];<br />	[obs release];<br />}<br />@end<br />



Normalement pour chaque valeur de l'IMC, il y a une observation donnée. Et malheureusement, l'observation ne va pas du tout avec l'imc. je précise que je suis grand débutant avec cocoa.

Réponses

  • schlumschlum Membre
    13:57 modifié #2
    NSString *obs = [[NSString alloc] init];
    -> allocation d'un objet

    obs = @...
    -> l'objet alloué est perdu, nouvelle référence sur une chaà®ne "statique"

    [obs release];
    -> release d'un objet statique ; terrible !
  • ChachaChacha Membre
    13:57 modifié #3
    Pour modifier une chaà®ne, voir NSMutableSting et setString:
  • 13:57 modifié #4
    Dans ton cas il suffit juste que tu vires le  :
    NSString* obs = [[NSString alloc] init];
    et que tu le remplaces par :
    NSString* obs;


    Et à  la fin, tu vires le [obs release] pas beau  :o Bref, comme te l'as expliqué schlum
  • 13:57 modifié #5
    lol !

    J'ai commencé cocoa hier. Merci beaucoup pour vos aides.
  • MalaMala Membre, Modérateur
    août 2008 modifié #6
    dans 1220007026:

    lol !

    J'ai commencé cocoa hier. Merci beaucoup pour vos aides.


    J'ai lu un jour qu'il suffisait de 2/3 jours à  un dev C/C++ pour se mettre à  Objective-C. ;)

    Il faut croire qu'un peu plus de temps sera nécessaire pour maà®triser le framework Cocoa...  :p

    Fais un tour ici...
    http://www.objective-cocoa.org/forum/index.php?topic=2713.0

    Cela devrait-t-aider à  comprendre certaines choses sur les strings de Cocoa.  ;)
  • 13:57 modifié #7
    Merci
Connectez-vous ou Inscrivez-vous pour répondre.