我有一个简单的程序,它使用 NSTimer 每秒播放一个声音。我已经声明了 NSTimer 变量,但 XCode 认为它没有被使用。除此之外,计时器不会响应无效命令,甚至不会释放它或将其设置为 nil。我已经尝试摆脱该行的可变部分,只使用“[NSTimer ...]”部分,但后来我无法使其无效。
这是.h文件:
#import <UIKit/UIKit.h>
@interface timer_workingViewController : UIViewController {
NSTimer *timer1;
}
@property (nonatomic, retain) NSTimer *timer1;
- (IBAction)startButtonPressed:(id)sender;
- (IBAction)stopButtonPressed:(id)sender;
- (void)timerFunction:(id)sender;
@end
这是 .m 文件:
#import "timer_workingViewController.h"
#import <AudioToolbox/AudioToolbox.h>
@implementation timer_workingViewController
@synthesize timer1;
- (IBAction)startButtonPressed:(id)sender {
NSTimer *timer1 = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(timerFunction:) userInfo:nil repeats: YES];
}
- (IBAction)stopButtonPressed:(id)sender {
[timer1 invalidate];
[timer1 release];
timer1 = nil;
}
- (void)timerFunction:(id)sender {
NSString *path = [[NSBundle mainBundle] pathForResource:@"bell" ofType:@"wav"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &soundID);
AudioServicesPlaySystemSound(soundID);
}
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
self.timer1 = nil;
}
- (void)dealloc {
[timer1 invalidate];
[super dealloc];
}
@end
nib 文件由一个开始按钮和一个停止按钮组成。按下开始按钮会导致计时器启动并且文件可以正常播放,但是一旦启动就无法停止。
这里有什么明显的错误吗?在线搜索一无所获,我尝试的任何方法都不起作用。