gpt4 book ai didi

objective-c - 正在保存 [NSTextField stringValue]... 窗口关闭时变量会被清除吗?

转载 作者:行者123 更新时间:2023-12-03 16:55:16 27 4
gpt4 key购买 nike

所以我从字段中获取用户名,将其保存在 NSString 变量中:

    loggedInUser = [usernameField stringValue];
[loginWindow close];

稍后,我尝试访问该 loggedInUser 数据:

    NSLog(@"Logged in User:%@", loggedInUser);

这经常(但并非总是)给出错误:

    Program received signal: "EXC_BAD_ACCESS". // Summary displays "{...}" for the value

loggedInUser NSString 被清除了吗?发生了什么? (我自己从不修改这个值)。

我唯一的想法是我以某种方式将 NSTextField 的 continued 值保存在 NSString 中。然后,当我关闭窗口时,该值将被清除。

是这样的吗?如何以安全的方式保存该文本字段值以供继续使用?

最佳答案

啊啊,我刚刚意识到发生了什么事。

当您关闭窗口(并且它可能会被释放)时,您分配给对象的 NSString 变量的字符串也会自动释放。

您需要明确保留它。

或者,更重要的是,执行以下操作:

loggedInUser = [[NSString alloc] initWithString: [usernameField stringValue]];

或者:

loggedInUser = [[usernameField stringValue] copy];

当调用 dealloc 方法时,不要忘记释放 loggedInUser(假设您此处没有使用 ARC)。

关于objective-c - 正在保存 [NSTextField stringValue]... 窗口关闭时变量会被清除吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8274361/

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