2013-08-27 30 views
0

我是iOS開發新手,想知道是否有人可以幫我理解爲什麼這會起作用? @synthesize是做什麼的?試圖瞭解iOS開發中的AVAudioPlayer

在.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

在面向對象的編程,有方法或功能,稱爲setter和getter。設置者爲某個變量設置數據。獲取者本質上是數據的獲取者。使用objective-c和iOS,你不必爲你正在處理的變量提供setter和getters。 @synthesize關鍵字是自動創建setters/getters的。使用你的代碼

對你有@property一個例子,編譯器是這樣做的:

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

這是不完全的約定,編譯器會使用,但它僅僅是表現出制定者/ getters顯示@synthesize所做的事情。它就像是一個自動創建的getters/setters。

在你的例子中,它的工作方式是當你爲玩家創建屬性時,編譯器已經將玩家視爲一個對象,所以它將它創建爲一個「全局」變量,這意味着你可以在所有的.m文件,而不僅僅是您播放聲音的地方

希望這有助於!

+0

確實如此,謝謝! – Chris

+0

沒問題:)很高興我可以得到一些幫助 – user2277872