シングルトンをたくさん使用しています。私はシングルトンフレームワークと呼んでいます。iOSでプレフィックスヘッダーにシングルトンが存在する可能性のある問題
また、XCodeプロジェクトのプレフィックスヘッダーにシングルトンの定義を書きたいので、すべてのクラスですべてのシングルトンを1行のコードで使用できます。 私にはこれは天国のようだが、私はすべてのアプリでメモリの警告をたくさん扱わなければならないことに気づいている。だから私は疑問に思っていました。私のシングルトンの定義をプレフィックスヘッダに入れることと関係がありますか?私にとっては、シングルトンはプレフィックスヘッダーに入れるかどうかは関係ありません。 多分、8つの異なるシングルトンが同時に存在し、それぞれが異なるオブジェクトを持つという事実はありますか?ここで
は私のプロジェクトでは、通常のプレフィックスヘッダの例です:
//Imports
#import "Program.h"
#import "Category.h"
#import "GetSpecs.h"
#import "FlurryAPI.h"
#import "AdSmallView.h"
#import "SoundPlayer.h"
#import "ButtonAlert.h"
#import "NSViewHelper.h"
#import "NSDateHelper.h"
#import "NSStringHelper.h"
#import "TESTAppDelegate.h"
#import "EGORefreshTableHeaderView.h"
//Singletons
#define gSpecs [GetSpecs sharedGetSpecs]
#define bAlert [ButtonAlert sharedButtonAlert]
#define sPlayer [SoundPlayer sharedSoundPlayer]
#define adSmallV [AdSmallView sharedAdSmallView]
#define vHelper [NSViewHelper sharedNSViewHelper]
#define dateHelper [NSDateHelper sharedNSDateHelper]
#define nsprefs [NSUserDefaults standardUserDefaults]
#define strHelper [NSStringHelper sharedNSStringHelper]
#define pDel ((TESTAppDelegate *)[[UIApplication sharedApplication] delegate])
そう結論に、私は2つの質問を持っている:プレフィックスヘッダにシングルトンの定義を置くために悪い習慣 1.ですか? 2.このプレフィックスヘッダー部分によってメモリの問題が発生する可能性がありますか、それとも、多くの異なるシングルトンが連続して「生きている」という事実は可能でしょうか?
実際には、メモリ警告の種類を書く必要があります。最初の質問については、#defineを使用しているので、おそらく実際には下のコードを「置き換える」だけですが、あなたは常に効率的な方法ではなくsharedXXXメソッドを使用しています...最初に一度呼び出す変数の中で、最後まで使用する方が効率的です。 2番目の質問、必要なメモリ警告/問題、そしてあなたのシングルトンテンプレートもいいでしょう。 – lm2s
"(同じコード行を何度も書くのは嫌いです)だから、シングルトンを作り、どこでも使えるのが大好きです。あなたは私たちのことを冗談にしていますよね? – Caleb
メモリ警告は、非常に多くの異なるシングルトンインスタンスを浮遊させることによって引き起こされる可能性があります。明示的にどこかでそれらを解放しない限り、アクセスされると、アプリケーションが存在するまでメモリに残ります。シングルトンのための時間と場所があります。あなたのデザインパターンが、メモリが少ないモバイルデバイスに適しているかどうかを検討する必要があります。レイジーロードのものと完了時のリリースの方が一般的です。 – jdmunro