2013-05-03 59 views
0

我正在開發iphone應用程序,它在viewDidLoad中調用arc4random來獲取隨機數。我的問題是每次應用程序啓動時,都會從arc4random獲得相同的編號。我應該指出,當我在iPhone設備上測試應用程序並從設備觸摸屏啓動應用程序時,我會看到這種行爲。如果我從xcode的設備上運行應用程序,然後我看到不同的隨機數。arc4random始終在應用程序啓動時返回相同的初始值

任何幫助或建議,將不勝感激。謝謝。

+2

'arc4random'應該自動播種,這就是爲什麼沒有明確的種子功能。事實上,你永遠不應該看到這種行爲。你可以發佈一些代碼嗎? – 2013-05-03 10:07:35

+0

爲了完整起見,代碼行是「int chosen_book =(arc4random()%numberOfBooks)+ 1;」 (其中numberOfBooks也是一個值爲66的int) – 2013-05-03 10:09:24

+0

此代碼是否僅在應用程序啓動時運行?如果應用程序未終止但在後臺運行,則應用程序:didFinishLaunching :(例如)將不會被後續調用,而Xcode將在運行之前強制終止。 – 2013-05-03 10:20:13

回答

2

arc4random不需要播種,每次打電話時都不應該返回相同的結果。

從您的意見,我覺得你的代碼沒有被執行,每次你的應用程序來到前臺。請記住,當您按主頁按鈕時,您的應用程序默認情況下不會終止。它將進入背景,並在您再次點擊圖標時恢復。

如果你的代碼在viewDidLoad裏面,它只會被調用一次,這意味着你的變量不會被更新,並且每次你檢查它時都會包含相同的值。當你從Xcode運行你的應用程序將被完全終止,每一次你會得到預期的行爲。

您應該將代碼放入viewWillAppear:viewDidAppear:,以便在視圖出現在屏幕上時調用它,而不是在視圖初始加載時調用。

相關問題