シングルトンについて簡単な質問がありますが、多くの研究の後に私はそれについて明確な答えが見つかりませんでした。そこで、質問です - 私はStructA
を持っている:シングルトンの構造体で自己を使用する
struct StructA {
static let shared = StructA()
private init() {}
public func someFuncA() {
//self.somefuncB()
//or
//StructA.shared.someFuncB()
}
private func someFuncB() {
}
}
私はこのStructA.shared.someFuncA()
ような他のクラスからsomeFuncA
を呼び出す:
あなたは違い
self.somefuncB()
とStructA.shared.someFuncB()
は(コードの上を参照)ものを私に説明してくださいできますか? は、私の意見では違いはありませんが、私はself.somefuncB()
がコールバックで呼び出される必要があり、そのようなコード持っているものならば -をだから私は
[weak self]
を使用する必要がありますか?public func someFuncA() { someFuncWithCallback() { [weak self] in self?.somefuncB() } }
または私はちょうど
public func someFuncA() { someFuncWithCallback() { StructA.shared.someFuncB() } }
を書くことができます私は近い/ブロックで使用されるオブジェクトを所有している知っているように、それは、全く漏れがないことを言う「リーク」(Xcodeの楽器)と、このコードをチェックしますそれで、誰かが私にここで何が起こるか説明できますか?ありがとう。
'self :: method'は静的呼び出しを転送しますが、' Classname :: method'はそうではありません – chandlerbing
シングルトンのインスタンスは1つしかないので、 'self.someFuncB'と' StructA.shared.someFuncB'は等価です自己== StructA.shared; 「自己」の使用は、より簡単でより一般的なアプローチになります。シングルトンは決して解放できないので、あなたは '弱い '心配する必要はありません – Paulw11
@ Paulw11私はそれを得ました!回答として投稿することができます。 –