在iOS中将int转换为字符串的更好方法

时间:2014-06-03 18:22:03

标签: ios objective-c ios7 nsstring

我想知道是否有更好的方法将int转换为字符串 基本上我有一个计数器和一本字典

//
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
int cnt = 0;
//
// insert an object
//
id object = [[[SomeObject alloc] init] autorelease];
NSString *key = [NSString stringWithFormat:@"%d", cnt++];
[dict setObject:object forKey:key];

将int转换为字符串的时间比我预期的要多。 那么有更好的解决方法吗?

3 个答案:

答案 0 :(得分:5)

我认为这稍微快一点:

NSString* yourString = [@(yourInteger) stringValue];  

这个

[dict setObject:yourObj forKey:[@(yourInt) stringValue]];

看起来比以下更好:

[dict setObject:yourObj forKey:[NSString stringWithFormat:@"%d",yourInt]];

但是从速度和风格的角度来看,我们真的在这里分裂。

答案 1 :(得分:1)

Interesting link about nsfoundation

引用:

  

NSString创建并不是特别昂贵,但在使用时   紧密循环(例如,作为字典键),+ [NSString   stringWithFormat:]可以通过提高性能得到显着提升   替换为C中的asprintf或类似函数。

和代码示例:

NSString *firstName = @"Daniel";
NSString *lastName = @"Amitay";
char *buffer;
asprintf(&buffer, "Full name: %s %s", [firstName UTF8String], [lastName UTF8String]);
NSString *fullName = [NSString stringWithCString:buffer encoding:NSUTF8StringEncoding];
free(buffer);

答案 2 :(得分:0)

你是否明确需要它作为一个字符串?或者只是使用文字(注意在这种情况下它将是NSNumber):

[dict setObject:object forKey:@(cnt++)];