A avoir un objet NSView
, et il reçoit un message après que je pousse dans la barre menu le sous-menu Ouvrir. Il charge les données d'échange d'un fichier texte, et il devrait le rendre dans un CustomView
. Ainsi, lePourquoi l'objet objectif-c ne rafraîchit pas mon après réception d'un message?
-(IBAction)loadExchangeData:(id)sender
charge les données et stocker dans un NSMutableArray*
, et après qu'elle devrait rendue par drawRect.
Mais! Dans la fonction drawRect
les données avant chargées disparaissent, le NSMutableArray*
sera de nouveau 0X0.
et une partie du code:
.h:
#import <Cocoa/Cocoa.h>
@interface Chart : NSView
{
NSMutableArray * exchange;
}
- (IBAction)loadExchangeData:(id)sender;
@end
.m:
#import "Chart.h"
@implementation Chart
- (IBAction)loadExchangeData:(id)sender {
...
exchange = [NSMutableArray array];
[exchange addObject:...];
...
return self;
}
- (void)drawRect:(NSRect)dirtyRect
{
...
id sth = [exchange objectAtIndex:i];
...
}
@end
Post le code de loadExchangeData: afin que nous puissions voir ce qui pourrait être la cause. – sbooth
merci pour le code - avez-vous vérifié que vous n'utilisez pas 2 objets différents de Chart, ce genre de problème vient normalement si vous ajoutez des données à un objet et que vous essayez d'accéder aux données d'un autre objet. Vérifiez l'adresse de l'objet Chart lors de l'exécution de loadExchangeData et lorsque drawRect est exécuté. Vous pouvez conserver le point de freinage dans les deux fonctions et vérifier l'adresse de l'objet dans la pile d'appels. –
J'ai vérifié, oui, c'est le problème. Ils ont une adresse différente. Comment cela peut-il arriver? –