Bearbeiten2: Warum wurde nur der Fortschritt im "doSomething"-Methode aktualisiert, aber nicht point0?
Bearbeiten: mit dem Code, den ich habe. Ich weiß, dass ich etwas übersehen muss, aber ich konnte es einfach nicht finden.
Ich schreibe eine iPhone-App, die NSTimer verwendet, um einige Aufgaben auszuführen. Im Programm konnte ich den aktualisierten Wert der Variable, die sich innerhalb der NSTimer-Schleife befindet, nicht abrufen. Hier ist mein Code.
Schnittstellen-Datei
import
@interface TestNSTimerViewController : UIViewController {
IBOutlet UIProgressView *progress;
IBOutlet UIButton *button;
IBOutlet UILabel *lable1;
IBOutlet UILabel *lable2;
NSTimer *timer;
float point0;
}
@property (nonatomic, retain) UIProgressView *progress;
@property (nonatomic, retain) UIButton *button;
@property (nonatomic, retain) NSTimer *timer;
@property (nonatomic, retain) UILabel *lable1;
@property (nonatomic, retain) UILabel *lable2;
- (IBAction)buttonClicked:(id)sender;
@end
Implementierungsdatei
#import "TestNSTimerViewController.h"
@implementation TestNSTimerViewController
@synthesize progress;
@synthesize button;
@synthesize lable1;
@synthesize lable2;
@synthesize timer;
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
}
- (void)buttonClicked:(id)sender {
point0 = 1.0f;
lable1.text = [NSString stringWithFormat:@"%3.1f",point0];
timer = [NSTimer scheduledTimerWithTimeInterval:0.05
target:self selector:@selector(doSomething) userInfo:nil repeats:YES];
lable2.text = [NSString stringWithFormat:@"%3.1f",point0];
}
- (void)doSomething {
progress.progress = progress.progress+0.1;
point0 = 2.0f;
if (progress.progress == 1.0) {
[timer invalidate];
}
}
- (void)dealloc {
[button release];
[progress release];
[lable1 release];
[lable2 release];
[timer release];
[super dealloc];
}
@end
Nach der NSTimer-Schleife habe ich den Wert von point0 überprüft. Es hat sich nicht auf den Wert 2.3 geändert. Was ist falsch mit dem Code?
Vielen Dank,
0 Stimmen
Ich würde es auch nicht synthetisieren oder Eigenschaft es der float, können wir mehr Code sehen?
0 Stimmen
Im Methode habe ich den Timer gestartet, ich habe alles auskommentiert außer diese beiden Zeilen und Zeilen, um den Wert von Punkt0 auszudrucken.
0 Stimmen
Oh.. Ich habe auch Synthesieren und Eigenschaft des Floats entfernt, und das hat nicht geholfen.
1 Stimmen
Bitte zeigen Sie uns den Code. Andernfalls können wir nicht helfen.