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

时间:2013-03-03 21:43:20

标签: iphone ios nsstring nsdictionary

我在标题中定义了一个const char,如此

const char *storageIcon;

@property (assign) const char *storageIcon;

我的词典中有一个字符串值,这是一个单个字符,我想知道下面的代码是否正确地将它放入我的变量?

storageIcon = [[tempDict valueForKey:@"STORAGEICON"] UTF8String];

事情就是后来这个元素被破坏了......几乎就像内存泄漏一样,我无法弄清楚什么是错误的。

非常感谢任何帮助/提示。

1 个答案:

答案 0 :(得分:1)

来自NSString UTF8String的文档:

  

返回的C字符串会自动释放,就像释放返回的对象一样;如果需要将C字符串存储在创建C字符串的自动释放上下文之外,则应复制C字符串。

您正在为指定的属性分配此“即将被释放”的C字符串指针。基本上价值就会立刻消失。

您可以使用属性的setter和getter方法正确使用mallocfree,或者让事情变得更容易,并将属性更改为NSString而不是const char *

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

另一件事。你问题的标题是关于单个角色的。这将是char,而不是char *。如果你真的只想要NSString的第一个字符,那么你需要的方法与你现在所做的不同。