gpt4 book ai didi

iphone - 数据模型中的 Char* 内存被回收?

转载 作者:行者123 更新时间:2023-11-28 20:35:02 26 4
gpt4 key购买 nike

我有以下代码可以从文本字段中读取信用卡号并将其存储在数据模型中。卡号在存储时是正确的,但后来当我尝试从中读取时,它就变成了乱码。现在我猜这是因为内存被回收了,它不再有意义了。

从标签中设置卡号的代码:

        [cardInfo setCardNumber: [textField.text cStringUsingEncoding:[NSString defaultCStringEncoding]]];

数据模型中的代码:

    - (void) setCardNumber:(char *)number{
cardNumber = number;
//Value of cardNumber here is correct
}

在我稍后使用该属性检索值之前,一切看起来都是正确的。

最佳答案

来自docs for -[NSString cStringUsingEncoding:] :

The returned C string is guaranteed to be valid only until either the receiver is freed, or until the current autorelease pool is emptied, whichever occurs first. You should copy the C string or use getCString:maxLength:encoding: if it needs to store the C string beyond this time.

另外,你不应该使用+[NSString defaultCStringEncoding]。它完全不可靠,通常不能表示任意字符串。来自文档:

in general this encoding should be used rarely, if at all

关于iphone - 数据模型中的 Char* 内存被回收?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10874248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com