2014-10-11 91 views
2

的AppDelegate變量的斯威夫特最近推出的訪問修飾符。怎麼樣在我的AppDelegate private設置一些東西?我想要一些實例變量的是私有的,像window,例如。但我不能這樣做,因爲編譯器顯示我「聲明一個公共變種爲一個內部類」警告和建議的窗口屬性爲internal。好的,好的。我這樣做。但後來我仍然可以訪問該變量,如果我設置:封裝在斯威夫特

let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate 
appDelegate.window = nil // <- Accessible 

當然應用程序崩潰。有沒有辦法爲這種東西提供真正的保護?

回答

1

我不想成爲誰剛剛張貼的鏈接,並告訴你讀它的人,所以我會盡我所能來概括,但如果你真的想在訪問控制的一個偉大的詳細解釋和演練閱讀這篇文章迅速。

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html

從這個文檔:「在你的代碼的所有實體(有少數特定的異常,如本章稍後說明)有內部的默認訪問級別,如果你不自己指定一個明確的訪問級別。因此,在許多情況下,你不需要在你的代碼中指定一個明確的訪問級別「所以,除非你有一些不那麼常見的用例,在我看來,appdelegate的窗口屬性是罰款與它出生的訪問控制變量。

+1

我實際上談論的是編譯器不希望我任何的AppDelegate實例變量的設置爲'private'。該警告顯示爲原始帖子中所述。這是一個問題。 – 2014-10-11 18:42:29