2016-11-27 6 views
-1

私はいくつかのコードを理解しようとしていると私は、このコードはOS Xのアプリケーション上で何をするか疑問に思って:NSUserDefaults standardUserDefaults - このコードはObjective-Cでは何をしていますか?

[[NSUserDefaults standardUserDefaults] retain] 

それを変数として設定しています。私はそれがシステムに関する情報を収集するかどうか疑問に思っています。私は仮想マシン内でアプリケーションを実行しようとしていますが、それはできませんし、理由を見るためにコードを分析しようとしていますが、Objective-Cについてはわかりません。

+0

を必要とするたびにそれは限り私ができるように無意味です教えてください。 standardUserDefaultsはシングルトンなので、それをどこかに割り当てるという奇妙な状況でも保持されません。 – danh

+0

@danhなぜそれをどこか別の場所に割り当てるのはなぜですか? – Willeke

+0

これは '[NSUserDefaults standardUserDefaults]'で任意の場所にアクセスできます。 – danh

答えて

0

ARC(Automatic Reference Counting)が問題になる前は、retainreleaseがどこにでもあります。

オブジェクトを割り当てるとき、保持カウントをインクリメントするには、オブジェクトをretainにする必要があります。 releaseに電話した場合は、保持回数を減らします。保持カウントが今まで0をヒットした場合、オブジェクトがリリースされた、-deallocはARCで今すぐ

と呼ばれることになる、retainrelease命令は(strongweak)あなたがより多くを読むことができ、あなたのオブジェクトの属性のオフに基づいて、中にコンパイルされますそれについてここに:Objective-C ARC: strong vs retain and weak vs assign

とにかく、ダンが言ったようにそこにあなたのラインがあるということは何もしません。 [NSUserDefaults standardUserDefaults]はシングルトンであるため、あなたの下にリリースされる脅威はないので、保持カウントを増やすことはできません。
私はローカルポインタにstandardUserDefaultsを割り当てるための最も奇妙なことだとは思いませんが、それはシングルトンにアクセスするために同じように有効であるあなたは、標準のデフォルト

+1

いいえ、毎回 '[NSUserDefaults standardUserDefaults] 'を呼び出すだけでは効果的ではありません。メソッドを呼び出すことは効果的ではありません。 – Willeke

関連する問題