OC高效率52之用前缀避免命名空间冲突

本文介绍了一个简单的iOS音效播放器实现方案,利用Objective-C语言编写,通过SystemSoundID进行音效播放,并实现了播放结束后的回调通知。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#import <Foundation/Foundation.h>
/// Apple宣称其保留使用所有“两字母前缀”的权利,自己选用的前缀应该是三个字母
@class EocSoundPlayer;
@protocol EOCSoundPlayerDelegate <NSObject>
//播放完毕回调
-(void) soundPlayerDidFinish:(EocSoundPlayer *)player;

@end

@interface EocSoundPlayer : NSObject

@property (nonatomic , weak) id <EOCSoundPlayerDelegate> delegate;

-(id) initWithURL:(NSURL *)url;
-(void) playSound;
@end

#import "EocSoundPlayer.h"
#import  <AudioToolbox/AudioToolbox.h>
void completion (SystemSoundID ssID,void *clientData)
{
    EocSoundPlayer *player = (__bridge EocSoundPlayer *)clientData;
    
    if ([player.delegate respondsToSelector:@selector(soundPlayerDidFinish:)])
    {
        [player.delegate soundPlayerDidFinish:player];
    }
}
@implementation EocSoundPlayer
{
    SystemSoundID _systemSoundID;
}

-(id)initWithURL:(NSURL *)url
{
    if ((self = [super init]))
    {
        AudioServicesCreateSystemSoundID((__bridge CFURLRef)url, &_systemSoundID);
    }
    return self;
}

-(void) dealloc
{
    AudioServicesDisposeSystemSoundID(_systemSoundID);
}

-(void)playSound
{
    AudioServicesAddSystemSoundCompletion(_systemSoundID, NULL, NULL,completion,(__bridge void *)self), AudioServicesPlaySystemSound(_systemSoundID);

}
@end


转载于:https://my.oschina.net/u/2319073/blog/615312

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值