iphone - 如何将字符串中的单个字符保存到 NSDictionary 对象中

标签 iphone ios nsstring nsdictionary

我在 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 方法正确使用 mallocfree,或者您可以使事情变得更容易并将属性更改为 NSString 而不是 const char *

任何需要实际 C 字符串的属性客户端都可以根据需要调用 UTF8String 方法。

还有一件事。你问题的标题谈论的是单个角色。这将是 char,而不是 char *。如果您确实只想要 NSString 的第一个字符,那么您需要采用与现在不同的方法。

关于iphone - 如何将字符串中的单个字符保存到 NSDictionary 对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15191260/

相关文章:

objective-c - 使用 NSString 显示百分比

iphone - UIBarButtonItem 以编程方式

iphone - 为 UIView 自定义 initWithFrame

iphone - 将 iPhone CoreData 文件从一个项目复制到另一个项目

ios - UITableView 没有重新加载

iphone - iOS - 恢复自动续订订阅

iphone - 在我的 App 中的 App Store 中打开我的应用程序列表

ios - 核心数据未保存

ios - NSArray 到 NSString ....发生一些崩溃

ios - 如何在 iOS 的 WebView 内容中获取突出显示的文本范围?