簡體   English   中英

UIViewController-將實​​例變量初始化的位置(使用情節提要)

[英]UIViewController - where to put init of instance variables (using Storyboards)

我正在使用情節提要。 我只需要初始化一次UIViewController的實例變量。 每次我從菜單打開viewController時都會觸發viewDidLoadawakeFromNib (我在Facebook應用程序中使用SWRevealViewController作為側邊欄菜單)。 awakeFromNib多次觸發是否正常,還是SWR​​evealViewController錯誤?

因此,是否有一些特殊的初始化方法,還是需要從viewController之外(在AppDelegate中)設置實例變量?

編輯

我發現了這個問題SWRevealViewControllerSegue,重用了Viewcontrollers我沒有意識到,每次通過segue顯示控制器時,都會創建一個新的controller實例。 那是什么意思呢? 這是否意味着如果我有一個從Web API加載的數據表-每次我通過segue來回訪問時都會重新加載該表?。對我來說似乎不是很有效。 iOS正常嗎?

根據情況,可以重新創建或重用視圖控制器。 當您將視圖控制器推入導航控制器的堆棧時,幾乎總是推一個新實例。 使用標簽欄控制器時,它包含的視圖控制器通常保存在內存中。 為避免過多的內存消耗,在可能的情況下清理視圖控制器,而不要保留視圖控制器,這是有道理的。

如果您SWRevealViewControllerSWRevealViewController則是,聽起來好像應該每次都重新創建視圖控制器。 理想情況下,您不應該直接從視圖控制器中的Web API加載任何數據; 相反,請將您的API調用和模型提取到單獨的類中,您可以從任何視圖控制器中重復使用它們 然后,您只需要從模型/商店類中獲取最新數據,而不是在加載視圖控制器時通過網絡重新加載數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM