Sigkill sur le selector removeObjectsInRange: de NSMutableArray

GreensourceGreensource Membre
17:41 modifié dans API AppKit #1
Bonsoir!
J'ai un souci avec un NSMutableArray. Je veux enlever les i premières valeurs donc j'utilise removeObjectsInRange:
Ce qui donne:
<br />@try {<br />		[bufferForOutput getObjects:objects range:range];<br />		[bufferForOutput removeObjectsInRange:range];<br />	}<br />@catch (id theException) {<br />		<br />	}


J'ai bien mi un try catch au cas ou, mais mon souci c'est pas une exception c'est un sigkill que je me prend en pleine poire de manière aléatoire.

Petite précision, je rempli ce tableau comme une file FIFO. Une idée d'où ça peut venir? Selon a doc c'est surtout en cas de dépassement de range qu'il peut y avoir un souci...

Réponses

  • mpergandmpergand Membre
    17:41 modifié #2
    Salut Greensource,

    Attention, méthode très piègeuse !
    <br />NSMutableArray* a=[NSMutableArray arrayWithObjects:@&quot;1&quot;,@&quot;2&quot;,@&quot;3&quot;,nil];<br />NSRange range=NSMakeRange(1,2);<br />id o[2];<br />[a getObjects:&amp;o range:range];<br />[a removeObjectsInRange:range];<br />NSLog(@&quot;%@ %@&quot;,o[0],o[1]);<br /><br />
    


    o est un tableau d'objets, pas un NSArray, donc ces objets ne sont pas retenus, après le remove ceux-ci sont invalides !

    Essaye avec la méthode subarrayWithRange
  • GreensourceGreensource Membre
    17:41 modifié #3
    Ah super! Merci, j'avais zappé qu'ils n'était pas retenu en effet. Et justement je cherchais une méthode du style subArrayWithRange: mais étant tombé sur getObjects:... je pensais qu'il n'y avais que celle là .

    Thks!
Connectez-vous ou Inscrivez-vous pour répondre.