作者热门文章
- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我知道在 SQLite 中更改 stringWithCString
时如何处理这个问题...您只需 stringWithUTF8String
即可。这与 sysctlbyname
返回的 char *
是否相同? (见下面的代码)
- (NSString *) platform{
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString *platform = [NSString stringWithCString:machine];
free(machine);
return platform;
}
提前致谢!
最佳答案
如果您使用的 C 字符串是 UTF-8 编码的,则使用 stringWithUTF8String:
。如果它是纯 ASCII,则使用 stringWithCString:encoding:
,编码为 NSASCIIStringEncoding
。否则,它可能使用 Latin-1 编码,在这种情况下,您应该使用 stringWithCString:encoding:
和 NSISOLatin1StringEncoding
编码。
在这种情况下,sysctlbyname
几乎肯定会返回一个 ASCII 字符串,因此您应该这样做:
NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];
尽管使用其他两种方法中的任何一种都不会对您造成伤害。
关于iphone - stringWithCString 已弃用...那么我如何使用 sysctlbyname 返回的 char*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6991455/
我是一名优秀的程序员,十分优秀!