問題タブ [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.
swift - 呼び出されていない空のswiftプロジェクトのdeinit
xcode(6.3.2)で新しい「Single View Application」プロジェクトを作成し、ViewControllerにdeinit関数のみを追加するとします。アプリを実行し、アプリを閉じます。Deinit が呼び出されることはありません。いくつかのデバイスとシミュレーターでテストしました。
何故ですか?それは標準的な動作ですか?機能させるにはどうすればよいですか?
/* 編集 */ コメントを読んだ後、このコードを Viewcontroller に追加しました。
今私は得る
これは、ビュー コントローラーの deinit 関数が信頼できないため、viewDidDisappear 呼び出し内で手動でオブジェクトをクリーンアップする必要があるということですか?
ios - SKPaymentQueue.defaultQueue().removeTransactionObserver(self) 削除と追加
そうです、私はこのゲームをアプリストアでmisshapenと呼んでいます。私のゲームでは、アプリ内購入は正常に機能しますが、誰かがアプリ内購入ボタンを押してからメインメニューに移動するとゲームがクラッシュするバグを発見しました(IAP はオプション画面にあります) ユーザーがオプションに戻って IAP をクリックすると、トランザクション オブザーバーが既に存在するため、ゲームがクラッシュします。
私の問題を解決するために必要なコード行は
しかし、間違って呼び出された場合、ユーザーは常にログイン画面をアップルするように促されるため、どこで呼び出すべきかわかりません。私の修正はそれを呼び出すことでした
これは機能し、私の問題を修正しますが、ユーザーがメニューに戻ると、ユーザーはアップルのログイン画面でプロンプト表示され、これは必要ありません!! 助けてください よろしくお願いします!! :)
ios - Swift で NSURLSession を適切にクリーンアップする方法
次のコードを使用して、クラスの初期化で NSURLSession を作成しています。
それが完了すると、クラスは deinited されず、将来のアップロードのコールバックは最初のクラスのインスタンス化を自分自身として持ちます。アップロードが完了したら、NSURLSession を適切にクリーンアップするにはどうすればよいですか?
私のクラス全体はここで見ることができます:
swift - UITableViewCell オブジェクト deinit が呼び出されませんでした
問題は私のプロジェクトにあります。しかし、Master-Detail Application という新しい xcode ドラフト プロジェクトでも試しました。
基本セル クラスを作成し、セルをストーリーボードにマップしました。削除操作の後、deinit は呼び出されませんでした。セルへの強いまたは弱い参照はありません。
ios - UISplitViewController: 縮小モードでの DetailView の初期化を解除
私はしばらくこれに苦労してきましたが、解決策を見つけることができませんでした:
すべてのデバイス ファミリをサポートし、サイズ クラスを使用し、Swift 2.0 でプログラムされた iOS 9 アプリを入手しました。を使用してUISplitViewController
おり、折りたたまれた環境 (iPhone など) を除いて、すべてが思いどおりに機能します。
Master-ViewController はUITableViewController
、セルが選択されたときに置換セグエをトリガーする です。折りたたまれた環境では、これは、detailViewcontroller が画面にプッシュされることを意味します。はUISplitViewController
視覚的に のように動作しUINavigationController
ます。ただし、戻るボタンまたはスワイプ ジェスチャで detailViewController を閉じると、Master-ViewController で新しい置換セグエがトリガーされるまで割り当てが解除されません。
UISplitViewController
元々は両方のコンテンツを並べて表示するように設計されていたので、これは の機能のようなものだと思います。それにもかかわらず、折りたたまれた環境では、ポップされたときに以前にプッシュされた detailviewController の割り当てを解除UISplitViewController
する単純な のように動作することを望みます。UINavigationController
viewControllers
detailViewController がポップされた後、splitViewController の属性を手動で変更しようとしています。
しかし、それは役に立ちません。detailViewController を空の「ダミー」-ViewController に置き換えるだけでは、遷移が自動的にアニメーション化されるため、どちらも機能しません。で遊んでUISplitViewControllerDelegate
も役に立ちませんでした...
これに対する解決策はありますか (たぶん簡単ですか? :))、私は盲目すぎて見ることができませんか?
ios - インスタンスが初期化解除されたときに、インスタンス内のプロパティを操作する方法について混乱していますか?
これはAppleのドキュメントまたはswift bookのいずれかから入手しました
インスタンスが初期化解除されても、インスタンス内のプロパティに引き続きアクセスでき、インスタンスが完全になくなる前に必要に応じて操作できます。
私は混乱しています。たとえば、deinit()
メソッドでインスタンス プロパティを使用して数学的なアクションを実行するときのことですか? string
または、特定のインスタンスの一部であったタイプのプロパティをdeinit
() メソッドから出力するときを考えてみましょう。もしそうなら、deinit()
初期化解除中のプロパティを操作する唯一の方法はメソッドですか?