的寿命我有一个的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