2012-05-19 88 views
0

我有一個故事板應用程序。當第一個視圖在啓動時加載時,我有這段代碼來實例化我的主後臺線程,它一切正常。爲什麼AwakeFromNib在使用故事板時會反覆調用?

public override void AwakeFromNib() 
    { 
     base.AwakeFromNib(); 
     // Perform one-time initialization in this function 

     // Create and start the main worker thread 
     MainBackgroundThread = new Thread(new ThreadStart(MainLoop.RunWorker)); 
     MainBackgroundThread.Start(); 
    } 

但是,當用戶進入到不同的視圖,並且然後經由一個SEGUE追溯到第一視圖,AwakeFromNib()被再次調用。我以爲它只應該被稱爲一次...我在哪裏開始我的主要後臺線程,所以它只能開始一次?

回答

2

AwakeFromNib將在每次從故事板/ segue加載該視圖的新實例時調用。如果您在故事板中繼續播放,則應該期望每次都調用AwakeFromNib,因爲您是從一個筆尖對象真正創建視圖的新實例。如果你想啓動一個後臺線程,你可以嘗試這樣的:

public override void AwakeFromNib() 
{ 
    static NSThread * thread; 

    base.AwakeFromNib(); 
    // Perform one-time initialization in this function 

    // Create and start the main worker thread 
    if(!thread) 
    { 
     thread = new Thread(new ThreadStart(MainLoop.RunWorker)); 
    } 

    MainBackgroundThread = thread; 
    MainBackgroundThread.Start(); 
} 
+0

謝謝!你的修復效果很好! – nbonwit

相關問題