我使用了很多單身人士,我設置了很多,因爲我稱他們爲「單身人士框架」。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方法,而不是最有效的方法......在開始時調用一次,保存它在一個變量中,並使用它直到最後,似乎更有效率。第二個問題,需要的記憶警告/問題以及你的單身模板將會很好。 – lm2s
「(我討厭一次又一次地寫同樣的代碼),所以我喜歡做一個單例,並在任何地方使用它。」你在開玩笑吧,對吧? – Caleb
內存警告可能是由於有這麼多不同的單例實例浮動而引起的。除非您明確地將它們釋放到某個地方,否則一旦訪問它們將保留在內存中,直到應用程序存在。單身人士有時間和地點,你應該考慮你的設計模式對於低內存移動設備是否正確,在這些設備中,懶惰加載事件和完成時間釋放通常是首選。 – jdmunro