2016-10-04 58 views
0

簡單地說,我想知道刷新類的最佳方法是什麼。當我們將某些數據傳遞給該類的應用程序的diff-diff部分使用了相同的類時,我可以做到這一點通過簡單地採取一個全局變量,並改變它從其他類的價值但我想知道一些最適合這種事情的另一種方法。刷新類的最佳方法

回答

1

處理這種類型結構的最好方法是需要在其他MVC之間有效地共享類,這種方法是使類成爲單例。這意味着只能使用一個類的一個實例。這樣,如果一個MVC更改類,則不需要同步更改,因爲每個MVC都使用相同的實例。

若要使類單身,你做以下

創建靜態無功它是類

讓初始化函數私有,這樣的實例,沒有其他的類可以初始化它

class Singleton { 

    static var shared = Singleton() 

    var info = "singleton info variable" 

    private init() {} 

    func doSomething() {} 

} 

要訪問你的類以下

Singleton.shared.doSomething() 

let singletonInfo = Singleton.shared.info 
+0

我想知道刷新一個類時,其他類的那個類的訪問。 –

+0

我是否需要在該類中接受一個全局變量,並將其設置爲其他類的值並將其與其他類進行比較以執行特定任務。 –

+0

是的,這將做到這一點。它實際上是一個全球課程,所以如果你在Singleton類中更改信息,每個訪問Singleton的課程都會看到信息的更新值 –

0

這要看情況,但我有時會這樣的觀點iOS中。例如,當數據模型更改時,您希望視圖更新,因此我在控制器中實現了一個名爲configureThingyViewWithThingy的方法,該方法使用新的'thingy'並更新視圖。然後,無論您用於監視數據模型更改(KVO,通知等)的機制都將調用此方法以使用新數據重新配置視圖。

+0

好吧,我給你的情況,當用戶從其他3個不同的類訪問一個相同的類A。那時api命中,取決於你從哪個類訪問當前類A.那時我需要比較一個全局變量還是我需要別的東西。 –

+0

我真的不明白你在問什麼。目前還不清楚您是否有一個實例或同一個類的三個實例。我不知道這種混淆是來自語言障礙還是誤解技術術語。如果你有一個能說英語和母語的人,並且懂得使用的技術術語,請讓他們幫助提問,以獲得更好的答案。對不起,沒有太大的幫助,繼續學習:) – jhabbott

1

你有兩個選擇:

(簡體) - 要麼你創建一個新的實例,並把它傳遞:

class MyClass { 
    let name: String 
    init(name: String) { self.name = name } 
} 

class MyViewController: UIViewController { 
    let myClass = MyClass(name: "Hello World") 

    func actionThatCausesSegue() { 
     let copyOfMyClass = MyClass(name: self.myClass.name) 
     self.performSegueWithIdentifier(identifier: "MySegue", sender: copyOfMyClass) 
    } 
} 

或者你可以使用結構:

struct MyStruct { 
    let name: String 
    init(name: String) { self.name = name } 
} 

class MyViewController: UIViewController { 
    let myStruct = MyStruct(name: "Hello World") 

    func actionThatCausesSegue() { 
     // structs are always copied when passed around. 
     self.performSegueWithIdentifier(identifier: "MySegue", sender: self.myStruct) 
    } 
} 

結構是總是複製,當你通過它們。下面是來自斯威夫特編程語言指南蘋果的解釋:

結構和枚舉是值類型

值類型是一種類型,它的值時,它被分配到一個 變量或常量,或者被複制當它傳遞給一個函數時。

在前面的章節中,您實際上廣泛使用了值類型。事實上,Swift整數中的所有基本類型,浮點數,布爾值,字符串,數組和字典都是 值類型,並在幕後實現爲結構。

全部結構和枚舉是Swift中的值類型。

你可以閱讀更多有關分歧here.