Ios 在NSObject类中使用AVAudioPlayer播放音频
为了组织工作,我决定创建一个名为SoundPlayer的类,用于运行我应用程序中的所有音频文件。(这将避免有许多重复代码) 声音播放器Ios 在NSObject类中使用AVAudioPlayer播放音频,ios,objective-c,avaudioplayer,nsobject,Ios,Objective C,Avaudioplayer,Nsobject,为了组织工作,我决定创建一个名为SoundPlayer的类,用于运行我应用程序中的所有音频文件。(这将避免有许多重复代码) 声音播放器 #import <Foundation/Foundation.h> #import <AVFoundation/AVFoundation.h> #include <AudioToolbox/AudioToolbox.h> @interface SoundPlayer : NSObject <AVAudioPlayerD
#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
#include <AudioToolbox/AudioToolbox.h>
@interface SoundPlayer : NSObject <AVAudioPlayerDelegate>
@property (strong,nonatomic) AVAudioPlayer *backgroundMusicPlayer;
-(void)PlaySound:(NSString*)name extension:(NSString*)ext loops:(int)val;
@end
这段代码非常简单,看起来效果很好。当用户第一次打开我的应用程序时,我想播放一个声音,为此,我将该类称为insidedidFinishLaunchingWithOptions,如下所示:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
SoundPlayer *sound = [[SoundPlayer alloc] init];
[sound PlaySound:@"preview" extension:@"mp3" loops:0];
return YES;//Diz que o retorno esta ok!
}
问题是声音没有被执行(现在,如果我复制了SoundPlayer类中的所有代码并将其放入我将使用的类中,声音运行得很好),这是什么问题?您的
SoundPlayer
类超出范围并被取消分配,这会使声音静音
将其分配给应用程序委托中的成员变量:
self.sound = [[SoundPlayer alloc] init];
[sound PlaySound:@"preview" extension:@"mp3" loops:0];
试试这个:
AppDelegate.h
#import <UIKit/UIKit.h>
#import "SoundPlayer.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property(strong,nonatomic) SoundPlayer * soundPlayer;
@end
#import <UIKit/UIKit.h>
#import "SoundPlayer.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property(strong,nonatomic) SoundPlayer * soundPlayer;
@end
#import "AppDelegate.h"
#import "SoundPlayer.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.soundPlayer = [[SoundPlayer alloc] init];
[self.soundPlayer PlaySound:@"preview" extension:@"mp3" loops:0];
return YES;
}