[解決済み] Swiftで遅延初期化された変数を再初期化する
2023-07-20 10:41:05
質問
次のように初期化された変数があります。
lazy var aClient:Clinet = {
var _aClient = Clinet(ClinetSession.shared())
_aClient.delegate = self
return _aClient
}()
問題は、ある時点で、これをリセットする必要があることです。
aClient
変数が初期化されたときに再び初期化できるように
ClinetSession.shared()
が変更されたときに再度初期化できるようにするためです。しかし、もし私がクラスをオプションの
Clinet?
に設定しようとすると、LLVMはエラーを出します。
nil
. もし、コードのどこかで
aClient = Clinet(ClinetSession.shared())
でリセットしても、結局は
EXEC_BAD_ACCESS
.
を使用する方法はありますか?
lazy
を使用して、自分自身をリセットすることを許可される方法はありますか?
どのように解決するのですか?
lazy は明示的に一度だけ初期化するためのものです。 あなたが採用したいモデルは、おそらく単なる初期化オンデマンドモデルでしょう。
var aClient:Client {
if(_aClient == nil) {
_aClient = Client(ClientSession.shared())
}
return _aClient!
}
var _aClient:Client?
これで、いつでも
_aClient
が
nil
であれば、初期化されて返されます。 を設定することで再初期化することができる。
_aClient = nil
関連
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] Swiftでindexとelementでループを反復させる方法
-
[解決済み] Swiftの@selector()?
-
[解決済み] なぜ「Implicitly Unwrapped Optionals」を作るのか、それは値があることを知っていることを意味しているからです。
-
[解決済み] SwiftUI。TextFieldをファーストレスポンダーにするには?
-
[解決済み] プロパティの型が内部型を使用しているため、publicを宣言することができない
-
[解決済み] Swiftの変数に"?"(クエスチョンマーク)と"!"(エクスクラメーションマーク)の装飾を施す。
-
[解決済み] NSDateを使用して曜日を取得する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Swiftダブルからストリング
-
[解決済み] クラス 'ViewController' は swift で初期化されません。
-
[解決済み] Xcode 8.3 betaの「String interpolation produces a debug description for an optional value; did you mean to make this explicit?
-
[解決済み] ラウンドトリップスウィフト番号の種類は、データとの間で
-
[解決済み] Optional Boolの値をチェックする
-
[解決済み] Swiftでオプショナルをダウンキャストする:as? タイプ、または as! タイプ?
-
[解決済み] SwiftUI のテキストのフォントサイズをカスタマイズする
-
[解決済み] swiftの辞書からキーと値のペアを削除するには?
-
[解決済み] Xcode playgrounds が Sources フォルダにある swift ファイルにアクセスできない。
-
[解決済み] SwiftUIでリストの左右のパディングを削除する方法は?