gpt4 book ai didi

ios - 尝试了解iOS开发中的AVAudioPlayer

转载 作者:行者123 更新时间:2023-11-30 17:48:38 26 4
gpt4 key购买 nike

我是 iOS 开发新手,想知道是否有人可以帮助我理解为什么这样做? @synthesize 有什么作用?

在 .h 中

@property (strong, nonatomic) AVAudioPlayer *player;

以 .m 为单位

@synthesize player;

-(void)startMusic{
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"audio" ofType:@"m4a"];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
player.numberOfLoops = -1; //infinite
[player play];
}

最佳答案

在面向对象编程中,有一些方法或函数,称为 setter 和 getter。 setter 为某个变量设置数据。 getter 本质上是数据的 getter。使用 Objective-C 和 iOS,您不必为正在处理的变量提供 setter 和 getter。 @synthesize 关键字会自动创建 setter/getter。使用您的代码的示例

对于您拥有的@property,编译器正在执行以下操作:

-(void)setAVAudioPlayer:(AVAudioPlayer *)player {}
-(AVAudioPlayer *)getAVAudioPlayer { return AVAudioPlayer var;}

这并不完全是编译器将使用的约定,但它只是为了显示 setter/getters 方式来显示 @synthesize 的作用。它就像自动创建 getter/setter。

在您的示例中,它的工作方式是当您为玩家创建属性时,编译器已经将玩家视为一个对象,因此它将其创建为“全局”变量,这意味着您可以在所有内容中使用它.m 文件的位置,而不仅仅是播放声音的位置

希望这有帮助!

关于ios - 尝试了解iOS开发中的AVAudioPlayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18455780/

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