毎秒メソッドを呼び出す必要がある NSTimer がありますが、まったく呼び出していないようです。
これは私がタイマーを宣言する方法です:
[NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(fadeManager:) userInfo:nil repeats:YES];
これが呼び出すメソッドです。
-(void) fadeManager: (NSTimer*) timer{
NSLog(@"IT'S WORKING!");
self.playHead += .1; // keeps track of where they are in full track
if (self.playHead >= self.wait && ![player isPlaying]) { // checks if wait is over
[player play];
}
if (self.playHead >= self.duration + self.startTime && [player isPlaying]) { // checks if full duration is over
[player pause];
[self reset];
}
int fadeOutArea = self.startTime + self.duration - self.fadeOut;
int fadeInArea = self.startTime + self.fadeIn;
if (self.playHead <= fadeInArea && [player volume] < relativeVolume) { // checks if fadingIn.
[self fadeInIncriment];
}
if (self.playHead >= fadeOutArea && [player volume] > 0) {
[self fadeOutIncriment];
}
}
コードが機能していなかったので、NSLog とブレーク ポイントを入れました。呼び出されることはないようです。どうしてこれなの?次のように .m ファイルでメソッドを宣言したことは重要ですか。
#import <AVFoundation/AVFoundation.h>
@interface CueMusic ()
- (void) delayFadeOut: (AVAudioPlayer*) dFade;
- (void) fadeInIncriment;
- (void) fadeOutIncriment;
- (void) fadeManager: (NSTimer*) timer; // <--------
- (void) start;
@end
@implementation CueMusic
.......