Es wiederholt ist. NEIN, wenn Sie will es nur einmal laufen lassen. Sie haben wiederholt: JA.
Es ist [tim invalidate] und nicht self.tim ungültig
Sie nicht do self.tim = nil, denn das ist es freigibt. Ungültig macht alles.
Für die Aufzeichnung, stellen Sie sicher, dass Ihre Eigenschaft korrekt ist, dh
@property (nicht atomare, behalten) NSTimer * happyTimer;
und
@synthesize happyTimer;
Für den Datensatz müssen Sie auf demselben Thread sein.
Ich hoffe, es hilft. Hier
ist alle Codezeilen Schnitt von einem Arbeitsherstellungsbeispiel:
NSTimer *ttt;
@property (nonatomic, retain) NSTimer *ttt;
@synthesize ttt;
self.ttt = [NSTimer scheduledTimerWithTimeInterval:7.00
target:self selector:@selector(ringBell) userInfo:nil repeats:YES];
if ([ttt isValid])
[ttt invalidate];
[ttt release]; // in dealloc
Sie müssen einige Debug-Linien NSLog hinzufügen (@ „Ich habe gerade für ungültig erklärt“); und so weiter, um sicherzustellen, dass du keinen Grundfehler hast.
versuche ich denke, Sie tun es richtig, nicht sicher, warum NSTimer nicht nach Ungültigkeitsmitteilung stoppt .. Ist ‚tim‘ gesetzt zu behalten? oder kopieren? beim Deklarieren der Eigenschaft – Sanniv
habe ich als beibehalten in property..I muss Kopie zuweisen? –