的壽命我有一個的NSTextField並獲得它的內容,像這樣的NSString cStringUsingEncoding返回值
NSString *s = [textField stringValue]
現在我想這個的NSString轉換爲我的獨立於平臺的C代碼可以處理的字符串。因此我在做:
const char *cstr = [s cStringUsingEncoding:NSISOLatin1StringEncoding];
我現在不明白的是這個「cstr」指針保持有效多久。蘋果文檔的cStringUsingEncoding說:
返回的C字符串是保證有效期至要麼 接收器被釋放,或直到當前內存被清空,先發生 。您應該複製C字符串或使用 getCString:maxLength:encoding:如果它需要在此時間之後存儲C字符串 。這個
兩個問題:
我想前面提到的 「接收器」 是由[文本字段stringValue的]返回的NSString。由於我不擁有這個NSString,我怎麼知道它何時會被釋放?假設這個NSString在NSTextField部件被釋放之前不會被釋放是否安全?
「直到當前內存被清空」是什麼意思?我根本不明白這一點。
當然,我可能只是繼續前進,使副本,但我想了解由cStringUsingEncoding返回的字符串指針的有效期。
我知道這裏有幾個類似的問題,但沒有人能真正回答我的問題,因爲在我的情況,NSString的所有者是的NSTextField控件,我不知道什麼時候這個小部件將釋放的NSString,或者如果它停留有效的部件本身的整個生命週期。
謝謝,我有關於保留的另一個問題,但我認爲這是一個新的問題。 – Andreas