0

我是 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];
}
4

1 回答 1

0

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

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

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

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

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

希望这可以帮助!

于 2013-08-27T02:08:46.627 回答