2013-10-23 24 views
1

我知道這聽起來很愚蠢,但只是爲了清楚一點。 有沒有可能在didBecomeActive之前調用視圖進行加載? 完全不可能嗎?有沒有可能導致ViewDidLoad在didBecomeActive之前被調用的任何場景?

編輯

我們當用戶回來從後臺應用程序,發生碰撞,我們開始使用OpenGL。崩潰錯誤指出我們嘗試在後臺使用openGL。

重要的是要說我們的應用作爲VOIP應用存在於後臺。

我們試圖找出是否有機會在某種程度上觸發背景中的某些東西,導致應用程序在後臺重新啓動openGl。

在堆棧中,我們看到:

[VideoCallViewController viewDidLoad] (VideoCallViewController.m:283) 

而且幾行後:

[GPUImageContext createContext] 

最後:

gpus_ReturnNotPermittedKillClient + 10 

我們正試圖找出是否有在後臺調用[VideoCallViewController viewDidLoad]或我們必須假設我們在前臺,並且在viewDidLoad之後以某種方式移動到後臺?

第二個選項 第二個選項是我們的確在viewDidLoad之後移動到背景。這裏的關鍵是我們正在傾聽AppWillResignActive並暫停GPUIMage。所以我們不明白爲什麼我們會發生這樣的事故?

感謝

感謝

+0

爲什麼??????????? – Patel

+0

我不知道,但如果你調用[yourViewController觀點]我想你可能會落入這種情況下... – D33pN16h7

回答

0

時/你在哪裏實例所使用的各種GPUImage對象?它是否在viewDidLoad中或可能在init中:?

這只是純粹的投機猖獗這裏,因爲你真的不發佈任何代碼...

,但如果您要處理的對象時不那麼,當談到重新創建應用程序首長背景回到前臺(可能是因爲viewController被父級保留,因此init:不再被調用,但viewDidLoad是...)然後,您可能試圖將OpenGL消息發送到實際上不再存在的對象。

在(大概不太可能)的機會,我的猜測是正確的,你可以很容易與常見的「吸氣」模式解決它:

- (GPUImageObjectOfInterest*)instanceOfObject { 
    if (!_classVariableOfThisType) { 
     _classVariableOfThisType = [[GPUImageObjectOfInterest alloc] init]; 
     // custom configuration, etc... 
     } 

    return _classVariableOfThisType; 
} 

然後用[self instanceOfObject];無論你習慣用_classVariableOfThisType

這是一個低開銷,但在大範圍的應用程序中斷/背景&前景&內存不足的條件下進行的合理萬無一失的方法肯定存在的關鍵對象。

不要害羞,儘管張貼太多的代碼,如果需要的話,我們可以通過整個課堂上閱讀。我們中的一些人喜歡閱讀代碼! (它會真正幫助你的反應得到的質量......)

相關問題