2013-03-03 32 views
0

我在頭文件中定義一個const char像這樣如何從一個字符串的單個字符保存到一個NSDictionary對象

const char *storageIcon; 

@property (assign) const char *storageIcon; 

我有我的百科一個字符串值,是單個字符,我woundering是將代碼放入我的變量中的正確方法之下的代碼?

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

的事情是,後來這個元素上被損壞..幾乎像一個內存泄漏ccuring,我想不出什麼去錯了。

任何幫助/提示將不勝感激。

回答

1

從文檔爲NSString UTF8String

返回的C字符串被自動釋放只是作爲返回的對象將被釋放;如果需要將C字符串存儲在創建C字符串的autorelease上下文之外,則應複製C字符串。

您正在將此「即將被釋放」的C字符串指針分配給指定的屬性。基本上價值馬上就會消失。

您可以做出與物業的setter和getter方法的mallocfree正確使用,或者你讓事情更容易和更改的屬性是一個NSString而不是const char *

任何需要實際C字符串的客戶端都可以根據需要調用UTF8String方法。

另一件事。你問題的標題談論單個角色。這將是char,而不是char *。如果你真的只想要NSString的第一個字符,那麼你需要一種與你現在正在做的不同的方法。

+0

好吧..冷靜,現在你說它很有意義。謝謝您的幫助!現在就去給它 – HurkNburkS 2013-03-03 21:50:09

相關問題