Comportement inattendu de NSMatrix
Bonjour,
J'ai une étrange réponse de NSMatrix dans le code suivant:
long hMove = < -1..+1 >;
long vMove = < -1..+1 >;
NSCell *position = [self.map selectedCell];
long theRow, theColumn;
[self.map getRow:&theRow column:&theColumn ofCell:position];
NSCell *destination = [self.map cellAtRow:theRow+vMove column:theColumn+hMove];
if (!destination) ...
D'après la doc:
The NSCell object at the specified row and column location specified, or nil if either row or column is outside the bounds of the receiver.
Je devrais donc exécuter ce IF si je "sors" de la matrice. Mais cela ne fonctionne que vers le haut et la gauche. Si j'essaie de déplacer la sélection vers la droite ou vers le bas, j'obtiens... une cellule en bonne et due forme, alors que je devrais recevoir NIL.
Cette histoire de "outside the bounds" me ramène aux temps paranoà¯des de QuickDraw: le point en bas à droite du rectangle est-il dans le rectangle ou en dehors?
Avons-nous affaire à quelque chose du même genre ici ou... est-ce un bug de NSMatrix? Ou un des miens?
Réponses
bonjour,
peut-être que quand tu sors de la sélection , il incrémente la colonne ?
au pire utilise les méthodes numberOfRows et numberOfColumns
pour faire toi mêmes tes tests de validités.
Oui, c'est ce que j'ai fini par faire... n'empêche c'est plutôt bof comme comportement non documenté...
Merci en tout cas!