2013-08-30 135 views
2

我想盡可能優化我的應用程序,因爲它可以得到,你可以請建議哪種方法是最好的,並建議。最好的方法來處理NSString Memeory

@implementation Methode1 
+(BOOL)Isdone{ 
     BOOL result = [[NSUserDefaults standardUserDefaults] boolForKey:@"DEVICE_TYPE"]; 
     if(!result){ 
     [[NSUserDefaults standardUserDefaults]setBool:YES forKey:@"DEVICE_TYPE"]; 

     } 
    return result; 
} 
@end 

@implementation Methode2 
NSString * const deviceTypeKey @"DEVICE_TYPE"; 
+(BOOL)Isdone{ 
    BOOL result = [[NSUserDefaults standardUserDefaults] boolForKey:deviceTypeKey]; 
    if(!result){ 
    [[NSUserDefaults standardUserDefaults]setBool:YES forKey:deviceTypeKey]; 
    } 
    return result; 
} 
@end 

@implementation Methode3 
#define deviceTypeKey @"DEVICE_TYPE" 
+(BOOL)Isdone{ 
    BOOL result = [[NSUserDefaults standardUserDefaults] boolForKey:deviceTypeKey]; 
    if(!result){ 
    [[NSUserDefaults standardUserDefaults]setBool:YES forKey:deviceTypeKey]; 
    } 
    return result; 
} 
@end 

在上面提到的三種方法中哪一種最具記憶效率,爲什麼?

+2

如果你已經優化了所有其他的東西,這是你最大的記憶問題......那麼,祝賀你編寫這樣的代碼。你現在可能會停止優化,因爲它變得荒謬。如果這不是你最大的記憶豬,那麼請儘早停止優化,儘快諮詢分析器。 – JustSid

回答

3

他們都不會在內存方面有絲毫重大差異。常量字符串文字由編譯器爲您優化。

更重要的是程序員錯誤和可維護性的風險 - 因此使用默認鍵的常量或定義是一種可行的方法。我是自己的常客。

另請參閱@ JustSid的評論。你需要使用儀器來尋找真正的問題,不要隨意挑選一些代碼,併爲之感到痛苦。首先編寫mainainability和可讀性,然後通過分析找出實際問題。

+0

我的應用程序在profiler,靜態分析器等方面都很好,每件事情都很好控制。我從我的牧羊人得到的一個表示,方法一(Methode1)的使用更耗費內存:)作爲@「DEVICE_TYPE」的內存在內存中給出兩次,以澄清這一點,我沒有找到任何相關的文件。其他方法也在我的應用程序中實現,所以只是爲了澄清我的疑問,這是我問這個問題的最佳選擇方法。 「感謝您的答覆」。但是,除了任何人解釋我將使用最少的記憶足跡print.and爲什麼,只是出於好奇。並在第一種情況下編譯器會做任何優化? –

+0

有關更多信息,請參閱http://stackoverflow.com/questions/8032375/difference-between-nsstring-literals。 – jrturton

相關問題