問題タブ [weak]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - プログラムによるカスタムビューの迅速なtableView - コントローラーデリゲートとデータソースへの参照を失う
MVVM パターンを学習し、Snapkit を使用してプログラムですべてのビューを作成しようとしています。単純な tableView で構成されるハンバーガー メニューを作成していますが、カスタム ビューの tableView でビュー コントローラーのデリゲートとデータ ソースの参照が失われているという問題があります。UITableViewController も使用してみましたが、結果は同じです。これが私のコードです。
ビューモデル:
意見:
そして私のView Controller:
私はいくつかのチュートリアルから学んでおり、この問題はありませんでしたが、それらはすべてインターフェイス ビルダーを使用していたため、これは避けたいと考えています。本当に間違ったことをしている場合は、お知らせください。ありがとうございます。
解決
私は、この表示されたコードの外で本当に大きな間違いを犯したことを知りました.関数でSideMenuControllerを初期化し、それへの参照を保持しなかったため、当然、関数の終了後に自動的に初期化が解除されました. それは本当に悪い間違いでした。すべての回答に感謝します。ここのコードは機能していますが、回答に従ってリファクタリングしました。
c++ - 「弱い」関数を作成してオブジェクトで使用するにはどうすればよいですか?
「MQTT_interface」というクラスを書いています。このクラスのメソッド「再接続」で「コールバック」関数を使用する必要があります。開発者は自分自身のために関数「コールバック」を書くと思います。そうでない場合は、コンソールにエラーを送信する同じ名前(「コールバック」)の弱い関数のようなものがあるでしょう。
それが可能かどうかはわかりません。
私はこれらのファイルを持っています:
MQTT_interface.h
MQTT_interface.cpp
main.cpp
swift - 内部関数キャプチャ リストとその修飾子を迅速に指定する回避策はありますか
内部関数のキャプチャ リストの迅速な仕様を検索しましたが、運がなければ、これらの種類の参照サイクルを破る方法はありますか?
swift - 「プロパティ 'tableViewDelegate' が 'weak' であるため、インスタンスはすぐに割り当て解除されます」をトリガーせずに弱いデリゲートをインスタンス化する方法
tableView のデータソースを別のデリゲート オブジェクトに分離しようとしています。そのデリゲートはある時点でテーブルビューにアクセスする必要があるため、デリゲート内の委任オブジェクトへの参照が必要です。どちらもクラスなので、デリゲートを作成して強い参照サイクルを回避する必要がありますweak
これを達成するために、次のコードを試しました。
デリゲート Xcode をインスタンス化しようとすると、「プロパティ 'tableViewDelegate' が 'weak' であるため、インスタンスはすぐに割り当て解除されます」という警告がスローされます。
したがって、それを修正するために、次のことを行います。
次のことが当てはまるかどうかを確認してください: viewDidLoad() メソッドでデリゲートを初期化することにより、そのインスタンスを保持する変数がそのメソッドのスコープを離れるとすぐに割り当て解除されるため、強い参照を作成する危険はありません。別の言い方をすれば、(クラスを指す) 変数が強い参照を作成することについて心配する必要があるのは、変数がクラス レベルで初期化されている場合のみであり、そのため、クラスが存続する限り存続します。 .
あれは正しいですか?