gpt4 book ai didi

objective-c - 单例类(class)的音频

转载 作者:行者123 更新时间:2023-12-03 02:20:34 25 4
gpt4 key购买 nike

我创建了一个Singleton类来充当音频播放器,该类将在启动时启动音频,并且可以从另一个类中关闭。

在另一个类,当我打电话

[[Singleton singleton] audioPlayer stop];

它给我错误
'Expected :'

我了解OOP,但我认为我从未尝试过访问对象的对象。有任何想法吗?
//  Singleton.m


#import "Singleton.h"

@implementation Singleton

#pragma mark Singleton Methods

+ (id)sharedManager {
static Singleton *singleton = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
singleton = [[self alloc] init];
});
return singleton;
}

- (id)init {
if (self = [super init]) {

boy = false;
girl = false;

NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/Mathletics Theme.mp3", [[NSBundle mainBundle] resourcePath]]];

NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = -1;
audioPlayer.volume = 0.85f;

if (audioPlayer == nil)
NSLog([error description]);
else
[audioPlayer play];

audioPlayer.numberOfLoops = -1;

if (audioPlayer == nil)
NSLog([error description]);
else
[audioPlayer play];
}
return self;
}

@end





// Singleton.h

#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>

@interface Singleton : NSObject {

AVAudioPlayer *audioPlayer;

}

@property (nonatomic, retain) AVAudioPlayer *audioPlayer;

+ (id)singleton;

@end

最佳答案

在Singleton类中,您可能具有类似+ (MySingleton *) instance的方法

所以使用[[Singleton instance] audioPlayer stop];
要么

Singleton *singleton = [Singleton instance];
[singleton.audioPlayer stop];

使用MyString的MySingleton示例
MySingleton *mySingleton = [MySingleton instance];
mySingleton.myString = @"hi sigletone";
NSLog(@"%@",mySingleton.myString);

示例MySingleton.h
@interface MySingleton : NSObject

@property (nonatomic,retain) NSString *myString;

+ (MySingleton *) instance;

@end

示例MySingleton.m
#import "MySingleton.h"

@implementation MySingleton

- (id) initSingleton
{
if ((self = [super init]))
{
// Initialization code here.
}

return self;
}

+ (MySingleton *) instance
{
// Persistent instance.
static MySingleton *_default = nil;

// Small optimization to avoid wasting time after the
// singleton being initialized.
if (_default != nil)
{
return _default;
}

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_4_0
// Allocates once with Grand Central Dispatch (GCD) routine.
// It's thread safe.
static dispatch_once_t safer;
dispatch_once(&safer, ^(void)
{
_default = [[MySingleton alloc] initSingleton];
});
#else
// Allocates once using the old approach, it's slower.
// It's thread safe.
@synchronized([MySingleton class])
{
// The synchronized instruction will make sure,
// that only one thread will access this point at a time.
if (_default == nil)
{
_default = [[MySingleton alloc] initSingleton];
}
}
#endif
return _default;
}

@end

关于objective-c - 单例类(class)的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13600560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com