Ich habe eine einfache Frage zu Singleton in schnellen, nach vieler Forschung, die ich nicht eine klare Antwort darauf gefunden. Also Frage ist - ich habe ein StructA
:Verwendung selbst in Singleton struct
struct StructA {
static let shared = StructA()
private init() {}
public func someFuncA() {
//self.somefuncB()
//or
//StructA.shared.someFuncB()
}
private func someFuncB() {
}
}
I someFuncA
aus anderen Klasse wie dieses StructA.shared.someFuncA()
nennen:
Können Sie mir bitte erklären, was der Unterschied
self.somefuncB()
undStructA.shared.someFuncB()
(oben Code sehen)? Meiner Meinung nach gibt es keinen Unterschied, aber was ist, wenn ich einen solchen Code haben, wennself.somefuncB()
muss Rückruf aufgerufen werden -Also ich
[weak self]
verwenden müssen?public func someFuncA() { someFuncWithCallback() { [weak self] in self?.somefuncB() } }
oder kann ich nur schreiben
public func someFuncA() { someFuncWithCallback() { StructA.shared.someFuncB() } }
ich diesen Code mit „Leaks“ geprüft (Xcode Instrumente) es sagt, dass es kein Leck ist, da ich weiß, näher/Block besitzt Objekte, die verwendet in Kann mir jemand erklären, was hier passiert? Vielen Dank.
'self :: method' leitet statische Aufrufe weiter, während' Classname :: method' nicht – chandlerbing
Da es nur eine Instanz eines Singletons geben kann, sind 'self.someFuncB' und' StructA.shared.someFuncB' äquivalent Selbst == StructA.shared; die Verwendung von "Selbst" wäre der einfachere und gebräuchlichere Ansatz. Ein Singleton kann nie veröffentlicht werden, also müssen Sie sich nicht um "schwache" Sorgen machen. – Paulw11
@ Paulw11 Ich habe es! Sie können es als Antwort posten. –