簡體   English   中英

在iOS中釋放UIViewController的最佳方法是什么

[英]What it is the best way to release UIViewController in iOS

我目前正在構建一個示例iOS應用程序,我以編程方式開發了UIViewControllers和視圖,我的目標是iOS 7+設備,並且我有一個簡單的問題:在這里我將如何展示一個新的控制器

 MySuperController *superController = [[MySuperController alloc] init];
[self.navigationController showViewController:superController sender:self.navigationController];

首先,我想知道這是否是顯示另一個視圖控制器的正確方法? 第二個想象,我正在只顯示一次(通常在用戶啟動應用程序時顯示)的LoginViewController中執行這些指令,如何在創建並顯示另一個視圖控制器后釋放該loginviewcontroller? 我知道已經問過這個問題,但是提出的所有解決方案都是過時的/不合適的(我的示例應用程序已啟用ARC,我認為默認情況下已啟用)

我是這個環境的新手,感謝您的幫助/指示

這是呈現ViewController的好方法。 如果您啟用了ARC(默認設置),則不必擔心釋放,它將自動釋放。

正如Roy Nakum在評論中所說,如果您使用的是ARC,那么您的代碼就可以了。 使用局部強變量創建視圖控制器,然后顯示它。 此時,導航控制器將擁有它的所有權。 由於您的強引用是一個局部變量,因此在您的方法返回后它不會保留所有權。

但是,您的代碼還有另一個問題。 這行可能會給您帶來問題:

MySuperController *superController = [[MySuperController alloc] init];

您不應使用init來創建視圖控制器。 沒有任何內容。 您應該使用initWithNibName:bundle:從NIB加載視圖控制器)或instantiateViewControllerWithIdentifier (從情節提要加載視圖控制器)。

可以設置一個視圖控制器,使其“純” init方法加載其視圖,但是init方法需要特殊的處理,這不是正常的處理方法。

暫無
暫無

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

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