我是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];
}
答案 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文件,而不仅仅是您播放声音的位置
希望这有帮助!