处理NSString内存的最佳方法

时间:2013-08-30 07:28:29

标签: ios memory nsstring

我正在尝试尽可能地优化我的应用,请您建议哪种方法最好,并建议。

@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

在上面提到的三种方法中,哪种方法最有效,为什么?

1 个答案:

答案 0 :(得分:3)

他们中没有一个会在记忆方面产生丝毫的重大差异。编译器会为您优化常量字符串文字。

更重要的是程序员错误和可维护性的风险 - 因此使用常量或定义默认密钥是可行的方法。我自己一直是个常客。

另外 - 请参阅@ JustSid的评论。你需要使用工具来寻找真正的问题,不要挑选随机的代码并为之烦恼。首先写入维护性和可读性,然后通过性能分析找出实际问题。