试图了解iOS开发中的AVAudioPlayer

时间:2013-08-27 02:01:36

标签: ios c

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

1 个答案:

答案 0 :(得分:0)

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

对于你拥有的@property,编译器正在这样做:

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

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

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

希望这有帮助!