我是 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/