我在 header 中定义了一个 const char,如下所示
const char *storageIcon;
@property (assign) const char *storageIcon;
我的字典中有一个字符串值,它是一个字符,我很受伤,下面的代码是否是将其放入我的变量的正确方法?
storageIcon = [[tempDict valueForKey:@"STORAGEICON"] UTF8String];
问题是,后来这个元素被损坏了..几乎就像内存泄漏正在发生一样,我无法弄清楚出了什么问题。
任何帮助/提示将不胜感激。
最佳答案
来自 NSString UTF8String
的文档:
The returned C string is automatically freed just as a returned object would be released; you should copy the C string if it needs to store it outside of the autorelease context in which the C string is created.
您正在将这个“即将释放”的 C 字符串指针分配给已分配的属性。基本上值(value)立刻就消失了。
您可以通过属性的 setter 和 getter 方法正确使用 malloc
和 free
,或者您可以使事情变得更容易并将属性更改为 NSString
而不是 const char *
。
任何需要实际 C 字符串的属性客户端都可以根据需要调用 UTF8String
方法。
还有一件事。你问题的标题谈论的是单个角色。这将是 char
,而不是 char *
。如果您确实只想要 NSString
的第一个字符,那么您需要采用与现在不同的方法。
关于iphone - 如何将字符串中的单个字符保存到 NSDictionary 对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15191260/