問題タブ [deinit]

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.

0 投票する
1 に答える
6154 参照

swift - UIView がメモリから削除されたときに迅速な deinit メソッドが機能しない

SwiftARCでは、いずれかがメモリから削除されているときに呼び出してdeinitいますが、メモリから削除されたUIViewController場合は呼び出されませんUIView

例えば

UIViewControllerクラスdeinitがうまく機能している場合

ただし、UIViewクラスが機能しdeinitない場合

何か案が 。

0 投票する
1 に答える
248 参照

swift - アンワインド後に AVPlayerViewController の割り当てが解除されない

私の tvOS アプリには、ショー セグエを介して提示される AVPlayerViewController があります。これは、警告を表示し、ビデオが見つからない場合は前のビューに戻ります。アラート コントローラーを作成して提示し、アラート アクション ハンドラーでアンワインド セグエを呼び出します。すべてが期待どおりに動作しているように見えますが、巻き戻されたビュー コントローラーの割り当てが解除されていないことがわかりました。

アンワインドを呼び出さずにメニューボタンを手動で押して戻ると、問題なく割り当てが解除されるため、アンワインドセグエに関する何かがプレーヤーの割り当て解除を許可していないことがわかりました。また、アンワインド セグエを次のように置き換えてみましたdismissViewControllerAnimatedが、プレーヤーを却下したように見えますが、まだ解放されていません。

0 投票する
1 に答える
110 参照

ios - View Controller が deinit されたときにネットワーク呼び出しを行うのは安全ですか?

基本的に、チャットルームを制御する UIViewController があります。UIViewController が何らかの方法で定義された場合、現在のユーザーはチャネルを離れる必要があります。

現在、私のコードは次のとおりです。

私は deinit のようなコードしか見たNSNotificationCenter.defaultCenter().removeObserver(self)ことがなく、これが安全かどうかについてオンラインで何も見つけていません。

本質的に、このView ControllerはUINavigationControllerスタックの一部であり、View Controllerがポップされるたびに(deinitが常に呼び出されると思います)、ユーザーにチャネルを離れてもらいます。ナビゲーション バーの左上の戻るボタンとパン ジェスチャを処理するための好ましい方法がある場合は、実装を確認したいと思います。

0 投票する
1 に答える
5689 参照

ios - Swiftでdeinitをオーバーライドすることは可能ですか?

別のクラスからサブクラスを作成する場合override、関数に必要ですが、 「関数」init()をオーバーライドすることはできません。deinit

これはSwiftで可能ですか?

ここに例があります

サンプルビューコントローラーの内部

出力

拡張に関する私の元の質問に追加するにはdeinit

コード例では、オーバーライドによってスーパークラスの関数がinit()呼び出されるようです。init()これは何が起こっているのですか?

Barインスタンスが初期化解除されると、同じ動作が発生します。これもここで起こっていることですか?

0 投票する
1 に答える
368 参照

ios - Swift 3 TableViewController が deinit しない

My Swift 3 iOS アプリは、3 つの ChildView を持つ TabBarController に続く LoginViewController で始まります。それぞれは、ViewController の rootView である NavigationController です。

1 つの ViewController には Logout Button が含まれており、これは LoginViewController に対して unwindSegue を実行します。

もう 1 つ (これは重要です) には 2 つのコンテナー ビューがあり、そのうちの 1 つは TableViewController です。TableViewController には、バックエンドからのデータが動的に入力されます。

バックエンドから 0 データが返された場合、すべて正常に動作します。ログアウト ボタンとすべての ViewController、および ContainerViews と TableView を押すと、deinit() が正しく取得されます。

TableViewController がバックエンドからデータを取得してセルを表示するとすぐに、 TableViewController に対して deinit() を呼び出さなくなります

原因は何ですか?リクエストに応じてコードを共有できます。

私がこれまで に試したこと: クロージャーが存在するすべての場所で、所有されていない自己を使用しようとしました。@escaping を使用してデータを取得するこの部分については、よくわかりません。

どんな助けにも感謝します!