問題タブ [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 投票する
2 に答える
1025 参照

swift - 呼び出されていない空のswiftプロジェクトのdeinit

xcode(6.3.2)で新しい「Single View Application」プロジェクトを作成し、ViewControllerにdeinit関数のみを追加するとします。アプリを実行し、アプリを閉じます。Deinit が呼び出されることはありません。いくつかのデバイスとシミュレーターでテストしました。

何故ですか?それは標準的な動作ですか?機能させるにはどうすればよいですか?

/* 編集 */ コメントを読んだ後、このコードを Viewcontroller に追加しました。

今私は得る

これは、ビュー コントローラーの deinit 関数が信頼できないため、viewDidDisappear 呼び出し内で手動でオブジェクトをクリーンアップする必要があるということですか?

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

ios - SKPaymentQueue.defaultQueue().removeTransactionObserver(self) 削除と追加

そうです、私はこのゲームをアプリストアでmisshapenと呼んでいます。私のゲームでは、アプリ内購入は正常に機能しますが、誰かがアプリ内購入ボタンを押してからメインメニューに移動するとゲームがクラッシュするバグを発見しました(IAP はオプション画面にあります) ユーザーがオプションに戻って IAP をクリックすると、トランザクション オブザーバーが既に存在するため、ゲームがクラッシュします。

私の問題を解決するために必要なコード行は

しかし、間違って呼び出された場合、ユーザーは常にログイン画面をアップルするように促されるため、どこで呼び出すべきかわかりません。私の修正はそれを呼び出すことでした

これは機能し、私の問題を修正しますが、ユーザーがメニューに戻ると、ユーザーはアップルのログイン画面でプロンプト表示され、これは必要ありません!! 助けてください よろしくお願いします!! :)

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

ios - Swift で NSURLSession を適切にクリーンアップする方法

次のコードを使用して、クラスの初期化で NSURLSession を作成しています。

それが完了すると、クラスは deinited されず、将来のアップロードのコールバックは最初のクラスのインスタンス化を自分自身として持ちます。アップロードが完了したら、NSURLSession を適切にクリーンアップするにはどうすればよいですか?

私のクラス全体はここで見ることができます:

https://gist.github.com/aishowdown/e88f6595e5a23d936e29

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

swift - UITableViewCell オブジェクト deinit が呼び出されませんでした

問題は私のプロジェクトにあります。しかし、Master-Detail Application という新しい xcode ドラフト プロジェクトでも試しました。

基本セル クラスを作成し、セルをストーリーボードにマップしました。削除操作の後、deinit は呼び出されませんでした。セルへの強いまたは弱い参照はありません。

0 投票する
0 に答える
499 参照

ios - UISplitViewController: 縮小モードでの DetailView の初期化を解除

私はしばらくこれに苦労してきましたが、解決策を見つけることができませんでした:

すべてのデバイス ファミリをサポートし、サイズ クラスを使用し、Swift 2.0 でプログラムされた iOS 9 アプリを入手しました。を使用してUISplitViewControllerおり、折りたたまれた環境 (iPhone など) を除いて、すべてが思いどおりに機能します。

Master-ViewController はUITableViewController、セルが選択されたときに置換セグエをトリガーする です。折りたたまれた環境では、これは、detailViewcontroller が画面にプッシュされることを意味します。はUISplitViewController視覚的に のように動作しUINavigationControllerます。ただし、戻るボタンまたはスワイプ ジェスチャで detailViewController を閉じると、Master-ViewController で新しい置換セグエがトリガーされるまで割り当てが解除されません。

UISplitViewController元々は両方のコンテンツを並べて表示するように設計されていたので、これは の機能のようなものだと思います。それにもかかわらず、折りたたまれた環境では、ポップされたときに以前にプッシュされた detailviewController の割り当てを解除UISplitViewControllerする単純な のように動作することを望みます。UINavigationController

viewControllersdetailViewController がポップされた後、splitViewController の属性を手動で変更しようとしています。

しかし、それは役に立ちません。detailViewController を空の「ダミー」-ViewController に置き換えるだけでは、遷移が自動的にアニメーション化されるため、どちらも機能しません。で遊んでUISplitViewControllerDelegateも役に立ちませんでした...

これに対する解決策はありますか (たぶん簡単ですか? :))、私は盲目すぎて見ることができませんか?

0 投票する
3 に答える
34 参照

ios - インスタンスが初期化解除されたときに、インスタンス内のプロパティを操作する方法について混乱していますか?

これはAppleのドキュメントまたはswift bookのいずれかから入手しました

インスタンスが初期化解除されても、インスタンス内のプロパティに引き続きアクセスでき、インスタンスが完全になくなる前に必要に応じて操作できます。

私は混乱しています。たとえば、deinit()メソッドでインスタンス プロパティを使用して数学的なアクションを実行するときのことですか? stringまたは、特定のインスタンスの一部であったタイプのプロパティをdeinit() メソッドから出力するときを考えてみましょう。もしそうなら、deinit()初期化解除中のプロパティを操作する唯一の方法はメソッドですか?