問題タブ [viewdidunload]
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.
iphone - メモリの警告を受け取った場合、どこですべてのビューを解放しますか?
すべてのビューとデータを正確に解放する必要があるメモリ警告を受け取った場合はどうなりますか?
でリリースする必要があるかどうか
- (void)didReceiveMemoryWarning
またはで
- (void)viewDidUnload
objective-c - アプリがアクティブなときにページがアンロードされないようにする方法
アプリにいくつかのタブがあります。現在、メモリが少なくなるたびにページがアンロードされるという問題に直面しています (特にアプリでカメラを起動した場合)。
これを軽減し、アンロードが起こらないようにする方法はありますか? または、ページのアンロードを許可する代わりに何かを実行できるように、アンロード プロセスをインターセプトする方法はありますか?
objective-c - Do I need to call [super viewDidUnload]?
I have seen some Apple examples that do call [super viewDidUnload];
and some that don't. I read an article (a few months ago so I dont recall the url) that said calling [super viewDidUnload];
was unnecessary but it didn't explain beyond that.
Is there a definitive reason why or why not to tell super that the viewDidUnload
?
And, (if it should be done) do I call super before setting all my properties to nil
, after, or does it matter?
Thanks!
ios - スクロール ビューでビュー関数を機能させる方法
次のコードを見てください
今 にアクセスし、bViewController
を離れるときにアラートを表示したいのですbViewController
が、 がviewDidUnload
機能しません。
- (void)viewWillDisappear:(BOOL)animated
どちらも機能しません。
では、どれが機能しますか?
ios - UINavigationController に追加されたときに UIViewController が解放されない
以下は、私が抱えている問題を示すためのコードの一部です。
ビューコントローラーを割り当てて初期化します。init メソッドは標準の Objective C の init であるため、View Controller はまだ何も実行していません。次に、新しく作成したビュー コントローラーでルートを初期化する navigationController を作成します。次に、ナビゲーションにビューコントローラーがあり、必要ないため、ビューコントローラーを解放します。次の行で nav が解放され、View Controller の dealloc/viewDidUnload が呼び出されることが予想されます。代わりに、そうではありません。nav コントローラーに sportsViewController を配置しない場合、sportsViewController が解放された後に dealloc が呼び出されます。私は何を間違っていますか?(ところで、正しく機能する他の同様のコードがあります)
c# - MonoTouch - 接続されているコンセントのリストを取得する
私は大規模な iOS アプリケーションに取り組んでおり、いくつかのクリーンアップ/パフォーマンス チューニングを行っている段階にあります。
私がしなければならないことの 1 つは、ViewDidUnload
どこでもオーバーライドして適切なアクションを実行することです。最も一般的なことは、UIViewController
to内のすべてのアウトレットを設定することnull
です。MonoTouch API を使用して、接続されているコンセントのリストを取得する方法はありますUIViewController
か? これにより、新しいアウトレットを追加しても何もする必要がないため、このプロセスがより堅牢になります。
注: すべてのアウトレットを null に設定しても、参照されているすべてのビューがキャッチされるわけではありませんが、大部分が取得されるはずです。
ios - オブザーバーを NSNotificationCenter に追加/NSNotificationCenter から削除するためのベスト プラクティス
に/からオブザーバーを追加および削除するためのベストプラクティスは何NSNotificationCenter
ですか?
self
オブザーバーとして追加してviewDidLoad
削除self
するviewDidUnload
だけで十分かどうか疑問に思っています。または、おそらく私も削除する必要self
がdealloc
あります。
おそらく、メモリ不足の状態を考慮する必要があります。viewDidLoad
追加と削除dealloc
が問題であることがわかりました:viewDidUnload
メモリ不足のために呼び出されます...viewDidLoad
ビューが再度表示されたときに呼び出されます...self
削除されずにオブザーバーとして2回追加されました(そうでdealloc
はなかったので)と呼ばれる)。
注:サブクラスself
を参照する基本的な例を考えています。UIViewController
iphone - iPhone - メモリ不足の状態に対処する方法
アプリがメモリ不足の警告メッセージを受け取ると、次の 3 つの状況が発生する可能性があります。
- アプリが起動されたばかりで、ユーザーが特別なことをしていない
- アプリが実行中で、現在のコンテキストがある
- アプリは実行中のコンテキストでバックグラウンドにあります
したがって、このメッセージを受け取ったら、メモリを解放する必要があります...しかし、どこで? そしてどうやって ?
という事は承知しています :
initWith
..... デフォルトの静的値を設定する必要があります。viewDidLoad
非静的オブジェクトをロードする必要がありますdidReceiveMemoryWarning
これらの非静的オブジェクトを解放する必要があります- 何ができるか、何をしなければならないかわかりません
viewDidUnload
...
いくつかの保持された値は、どこかで nil に設定する必要があると思います... didReceiveMemoryWarning で?
そして、アクティブなコンテキスト (画面の物の位置、表示されたテキストなど) で何をしなければならないので、viewDidLoad が再度呼び出されると、それらは memoryWarning 呼び出しの前の場所に再び表示されますか?
つまり、2 つのシナリオを想像してください。
シナリオ 1
- あなたは何かに取り組んでいます... フィールドにテキストを書きましたが、それを保存せず、別のビューを開き、画面上のビューを移動しました。
- アプリをバックグラウンドで送信します。
- 次に、memoryWarning がアプリに送信されます。
- その後、ユーザーはアプリをフォアグラウンドに送信します。以前のビューと同じように、現在のビューで終了時のように表示する必要がありますが、すべてが解放されている場合、どうすればこれを行うことができますか?
シナリオ 2
- あなたは何かに取り組んでいます... フィールドにテキストを書きましたが、それを保存せず、別のビューを開き、画面上のビューを移動しました。
- 次に、memoryWarning がアプリに送信されます。
- ビューにあるものや、前のビューにあったものを失いたくありません。リリース/リロード機能のために画面がちらつきたくありません。これにどう対処しますか?
これらのメモリ警告が発生した場合、ディスクに書き込んで後で表示する以外に選択肢はありますか?
そして、いつそれらを再度ロードしますか?ロード (viewDidLoad) し、memoryWarning を受け取り、アンロード (viewDidUnload) する viewController がありますが、それに戻ると、viewDidLoad は再度呼び出されませんか? これは viewWillAppear で行う必要がありますか? viewWillAppear がトリガーされるたびに、そこに表示されるはずのものが読み込まれていると考える必要がありますか?
貴重なリンクがあっても、どんな助けも素晴らしいでしょう!
ご協力ありがとうございました。
ios - didReceiveMemoryWarning および viewDidUnload の後に viewDidLoad を使用する
meory 警告が発生したときにビューを管理するプロセスを理解しようとしています。この回答でいくつかの良い情報を受け取りましたが、まだ質問があります。
ビューコントローラーVC2(そのサブビューはビュープロパティです)によって管理されるサブビューを含むビューコントローラーVC1があるとします。最初に、VC2 ビューを別の VC1 ビューに入れたい場合は、次のようにします。
しばらくして、VC2 でメモリ警告が受信されます。したがって、VC2 の didReceiveMemoryWarning が呼び出され、続いて VC2 の viewDidUnload が呼び出されます。
これが私の理解の終わりです(私がすでに言ったことが正しいなら!)
私が魔法のように起こると期待しているのは、VC2 のビューとそのリソースを解放できることです (たとえば、タブ バー コントローラーが参照しているが、現在は表示されていない 1 つのビューである可能性があります)。 VC2 の viewDidLoad メソッドですべて再作成できます。VC2の見解が当面見えないとすれば、解放されるはずだ。
どのように、正確にリリースされますか?didReceiveMemoryWarning は VC2 で実行されます。VC2 は独自のビューをリリースしますか? そうでない場合、何が起こると考えられますか。
2 番目の質問です。VC2 のビューが解放された場合、そのビューが再び必要になるとします (誰かがタブ バーの対応するタブを選択するなど)。私の理解では、VC2 のビュー プロパティが参照されると、VC2 loadView が呼び出されます。最初は、VC1 がプロパティ参照を使用してサブビューとして追加したときに参照されました。タブバーコントローラーは、タブバーコントローラーのviewControllers配列にあるビューコントローラーVC2を介して参照によって呼び出すことができます。したがって、タブバーコントローラーはビュープロパティを参照し、VC2 loadView が呼び出されると思います。
2 番目の質問について説明しましたが、同時に回答した可能性もあります。私がこれを正しく理解しているかどうか誰かが確認できますか?
また、(最初の質問のように) VC2 ビューをどこでどのようにリリースする必要があるのか、まだ明確ではありません。
メモリ警告に応答してビューとビュー階層を解放するこのプロセス全体を説明し、解放されたビューが必要なときにどのように再構成されるかを説明するチュートリアルはありますか? それは、このプロセスを理解するのに本当に役立ちます。
ios - viewDidUnloadのメモリ管理-配列とオブジェクトの両方を内部で無効にする必要がありますか?
インターネットからニュースを読み込むためのテーブルビューがあります。私とviewDidUnloadのすべてのプロパティをnilしようとしています。
viewDidUnloadでアプリがクラッシュするたび。self.iconDownLoader = nil;とコメントすると、問題ありません。それで、なぜこれが起こるのか誰かに教えてもらえますか?ありがとうございます。
--------------------- NewsViewController.m --------------------------
----------------------- IconDownLoader.m -------------------