2012-12-29 32 views
0

字符串selectedSong不保留它的值,當我在故事板中切換到另一個ViewController時。即使我所有的viewcontroller都連接到ViewController類。 我已經做了這樣的iphone - 字符串不保留其值

首先查看:

- (IBAction)selectTheSong { 
    selectedSong = @"test"; 
    NSLog(@"%@", selectedSong); 
} 

,有它返回日誌中的價值test

第二個視圖:

NSLog(@"%@", selectedSong); 


if (audioPlayer == nil) { 


NSString* soundPath =[[NSBundle mainBundle] pathForResource:selectedSong ofType:@"mp3"]; 
NSURL *soundURL = [NSURL fileURLWithPath:soundPath]; 


NSError *error = nil; 

self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&error]; 



[self.audioPlayer prepareToPlay]; 
} 
[self.audioPlayer play]; 

這一次,它在日誌中返回(null)

字符串設置不正確嗎?我試圖讓它成爲一個財產等,但沒有奏效。 請幫忙!謝謝!

回答

3

您需要將字符串設置爲屬性,並在您的類接口中使用strong保留類型。

例如。

@property (nonatomic, strong) NSString *myString; 

此外,始終使用關鍵字self訪問該字符串實例,以確保正在調用合成的存取器方法。

self.myString = @"Hello!"; 

希望幫助!

+0

太棒了!這正是我一直在尋找的東西,儘管自從我使用NSUserDefaults之後,我還沒有測試過它。我知道這是錯誤的,但保持一個字符串不會造成任何傷害,對吧?我應該堅持我擁有的還是使用你的想法? –

+0

我會使用一個屬性,除非您希望在應用程序關閉後保留字符串的狀態。除非有必要,否則不要浪費用戶iPhone上的空間,即使它只是一個字符串。另外,屬性是Objective-C開發的基石,通過學習操作的基礎知識,您會驚訝於您會理解多少,至少我是在第一次開始使用iOS時。當我第一次開始進行軟件開發時,他們向我透露了OOP的整個概念,訪問方法和內存管理。 –

0

使用屬性是要走的路。你如何將字符串的值從一個ViewController傳遞給另一個?您應該在prepareForSegue:方法中執行此操作。